当前位置: 首页 > news >正文

playwright--核心概念和Selector定位

文章目录

  • 前言
  • 一、浏览器
  • 二、浏览器上下文
  • 三、页面和框架
  • 四、Selectors
    • 1、data-test-id= selector
    • 2、CSS and XPath selector
    • 3、text 文本selector
    • 4、id定位selector
    • 5、Selector 组合定位
  • 五、内置Selector


前言

Playwright提供了一组API可自动化操作Chromium,Firefox和WebKit浏览器。通过使用 Playwright API,可以编写脚本来创建新的浏览器页面,导航到 URL,然后与页面上的元素进行交互。Playwright 可用于自动化用户交互以验证和测试 Web 应用程序。PlayWright的核心概念包括:

  • 浏览器
  • 浏览器上下文
  • 页面和框架
  • Selectors
  • 自动等待
  • 执行上下文
  • Evaluation Argument

一、浏览器

浏览器是指 Chromium、Firefox 或 WebKit 的实例。Playwright 脚本通常从启动浏览器实例开始,以关闭浏览器结束。浏览器实例可以在无头(无 GUI)或有头模式下启动。

二、浏览器上下文

浏览器上下文是浏览器实例中一个隔离的类似隐身会话。浏览器上下文的创建速度既快又方便。浏览器上下文可用于并行化隔离的测试执行。

import asyncio
from playwright.async_api import async_playwrightasync def main():with async_playwright() as p:browser = p.chromium.launch()# 创建新的隐身浏览器上下文context = await browser.new_context()# 在上下文中创建新页面。page = await context.new_page()await page.goto("https://www.baidu.com")await context.close()

三、页面和框架

浏览器上下文可以有多个页面。页面是指浏览器上下文中的单个选项卡或弹出窗口

四、Selectors

Playwright可以使用CSS选择器,XPath选择器,HTML属性(如)test、id、data-test-id等属性来定位元素。

1、data-test-id= selector

#同步
page.click('data-test-id=foo')
#异步步
await page.click('data-test-id=foo')

2、CSS and XPath selector

#同步
page.click('div')
page.click('//html/body/div')
#异步
await page.click('div')
await page.click('//html/body/div')

3、text 文本selector

page.click('text=Hello')

4、id定位selector

page.fill("id=kw", "csdn")

5、Selector 组合定位

不同的selector可组合使用,用 >>连接。

#单击#free month promo中带有文本“Sign Up”的元素
page.click('#free-month-promo >> text=Sign Up')

五、内置Selector

playwright 推荐的内置定位器:

1. page.get_by_text()通过文本内容定位
2. page.get_by_label()通过关联标签的文本定位表单控件
3. page.get_by_placeholder()按占位符定位输入
4. page.get_by_test_id()根据data-testid属性定位元素(可以配置其他属性)
5. page.get_by_role()通过显式和隐式可访问性属性进行定位
6. page.get_by_alt_text()通过替代文本定位元素,通常是图像
7. page.get_by_title()通过标题属性定位元素

说明:日常工作中比较常用的方法,已加粗

http://www.lryc.cn/news/36962.html

相关文章:

  • 响应式操作实战案例
  • NetApp AFF A900:针对任务关键型应用程序的解决方案
  • 使用Houdini输出四面体网格并输出tetgen格式
  • 组合预测 | MATLAB实现EMD-KPCA-LSTM、EMD-LSTM、LSTM多输入单输出回归预测对比
  • 【C语言】操作符详解总结(万字)
  • mac系统手册(帮助/说明)
  • VLC播放器Demo(录像,截图等功能),Android播放器Demo可二次开发。
  • WeSpeaker支持C++部署链路
  • window vscode编辑appsmith源码
  • 操作系统面试题
  • Kafka入门(七)
  • 微服务介绍
  • 搭建SpringBoot多模块微服务项目脚手架(三)
  • 对vue3中reactive、toref、torefs、ref的详细理解
  • C++ Primer Plus 第6版 读书笔记(6) 第 6 章 分支语句和逻辑运算符
  • Java Class 加密工具 ClassFinal
  • 【蓝桥杯集训·每日一题】AcWing 3555. 二叉树
  • 【JavaScript运行原理之V8引擎】V8引擎解析JavaScript代码原理
  • C++11:智能指针
  • ccc-pytorch-RNN(7)
  • docker安装(linux)
  • 【数据库概论】10.1 事务及其作用
  • 通讯录(C++实现)
  • 轻松掌握C++的模板与类模板,将Tamplate广泛运用于我们的编程生活
  • pandas 数据预处理+数据概览 处理技巧整理(持续更新版)
  • mmdetectionV2.x版本 训练自己的VOC数据集
  • Shell - crontab 定时 git 拉取并执行 maven 打包
  • 408考研计算机之计算机组成与设计——知识点及其做题经验篇目3:指令的寻址方式
  • 前端包管理工具:npm,yarn、cnpm、npx、pnpm
  • 推荐系统 FM因式分解