python playwright之元素定位示例详解
作者:莫离 发布时间:2023-06-14 01:08:41
定位篇
UI 自动化很多时候的苦恼都是定位不到,其实说实话我到现在有时候也是莫名其妙的定位到或者定位不到。好在这个框架定位方式的上限非常以及特别的高,这就像人有钱和没钱的区别主要在于选择权一样,有选择的人生才是幸福的。出门想开法拉利就开法拉利,想开拖拉机就开拖拉机。
定位的详细介绍
1、官方是不推荐 xpath 和 css 的,原话意思是 CSS 和 XPATH 是绑定于 DOM 上的,当 DOM 结构出现更改他们将失效。
2、文本内容,输入框内的 placeholder,labels 等这些我们可以理解成面向业务的属性这些反而不那么容易改变所以定位应该尽量的去面向业务。
文本选择器定位
下文这样是一个基础的文本定位 特点有
1、模糊匹配
2、不缺分英文的大小写
3、如果存在多个会报错
page.locator("text=社区").click()
也可以使用简写的方式,注意其中的单引号
page.locator("'Log in'").click()
比较精准的方式,点击 id=main-nav-menu 包含的元素里文本='社区'的元素,这里使用了 text() 伪类
page.locator("#main-nav-menu :text('社区')").click()
结合 CSS 使用,仅匹配 article 元素
page.locator('article:has-text("All products")').click()
CSS 选择器定位
点击 button 按钮
page.locator("button").click()
通过属性定位,点击属性中存在 href="/topics"的元素
page.locator('[href="/topics" rel="external nofollow" rel="external nofollow" ]').click()
通过属性精准定位:点击 ID=nav-bar 元素下的 href="/topics"的元素
page.locator('#main-nav-menu [href="/topics" rel="external nofollow" rel="external nofollow" ]').click()
通过 placeholder 定位以及输入
page.locator('[placeholder="搜索"]').fill('电子校的故事')
布局定位结合 CSS,也是我最喜欢的
page.locator("input:right-of(:text('开源项目'))").fill('电子校的故事')
非常的实用,尤其是在我们经常测的管理系统里边 dialog 里,只要左侧的 label 不变~ 代码就不用改
解释下上边这段代码,大家一边看代码一边把头往显示器的右上偏左侧看下。
定位的的呢是一个 Input,一个在文本为'开源项目'右侧的 input。
同理这里可以使用:right-of、:left-of、:above、:below、:near 这几种布局定位的方式
根据元素可用
点击一个可用的 button
page.locator("button:visible").click()
page.locator("button >> visible=true").click()
继续说说属性
点击一个按钮,它的文本包含了 Click me。另这里也可使用正则表达式
page.locator("button", has_text="Click me").click()
来源:https://testerhome.com/topics/33720


猜你喜欢
- 本文实例讲述了javascript实现简单的可随机变色网页计算器。分享给大家供大家参考,具体如下:该程序能实现简单的加、减、乘、除、求余,页
- 使用Flask实现进度条问题描述Python异步处理,新起一个进程返回处理进度解决方案使用 tqdm 和 multiprocessing.P
- 下面这个截图,就是使用 schedule 定时执行 Notebook 的例子import scheduleimport timeimport
- 前言本文主要给大家介绍的是关于Python中表达式x += y和x = x+y 区别的相关内容,分享出来供大家参考学习,下面来看看详细的介绍
- 一、数据引擎简介在MySQL 5.1中,MySQL AB引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL
- Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。在 Python
- 我们把对象(变量)从内存中变成可存储的过程称之为序列化,比如XML,在Python中叫pi
- 问题描述:为了把之前的CPU版本的tensorflow卸载,换成GPU版本的tensorflow,经历了一番折腾。BUG1 Could no
- 上一篇文章 跨表更新,看到自己写的SQL像个憨憨写了关于跨表个更新的内容。一年过的很快,文中后来的两位员工 馮大 和 馮二 也要面对无情的
- python中,count函数的作用是进行python中的数量计算。count函数用于统计字符串、列表或元祖中某个字符出现的次数,是一个很好
- 微信小程序 支付功能实现PHP实例详解前端代码: wx.request({ url: 'https://w
- 前言字典为动词“to yield”给出了两个释义:产出和让步。对于 Python 生成器中的 yie
- 跨浏览器的本地存储(一):userData behaviorDOM Storage,是基于 Web Applications 1.0 spe
- 今天我将教大家如何用哈希函数将密码加密加密后的密码是很难倒推的~普通加密:首先调用函数hashlibimport hashlib然后使用哈希
- 位置参数这是一个求等差数列和的函数,使用必需要传入一个参数n,这就是位置参数def sum(n): sum=0 &
- 下面我们自己在 Linux 下做一个动态库(.so 文件 - Shared Object),然在用 Go 来使用它。本文所用的操作系统为 U
- Metro风格设计主要特点 1.Windows 8 Metro风格设计,实现网站或系统功能的导航 2.纯Javascript实现 3.支持所
- 方法1: 用SET PASSWORD命令 首先登录MySQL。 格式:mysql> set password for 用户名@loca
- 在MySQL中,一个字符串中,如果某个序列具有特殊的含义,则这个序列以反斜线符号(‘\’)开头,称为转义字符。常见的转义字符:\0 ASCI
- Python最近挺火呀,比鹿晗薛之谦还要火,当然是在程序员之间。下面我们看看有关Python的相关内容。上一篇文章我们已经介绍了部分Pyth