python playwright之元素定位示例详解


Posted in Python onJuly 23, 2022

定位篇

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()

以上就是python playwright之元素定位示例详解的详细内容,更多关于python playwright元素定位的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
python实现统计代码行数的方法
May 22 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
Python实现基本线性数据结构
Aug 22 Python
利用python解决mysql视图导入导出依赖的问题
Dec 17 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
Python PyCharm如何进行断点调试
Jul 05 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Python如何测试stdout输出
Aug 10 Python
用python获取txt文件中关键字的数量
Dec 24 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 #Python
Python中的 No Module named ***问题及解决
Jul 23 #Python
利用Python脚本写端口扫描器socket,python-nmap
Jul 23 #Python
Python+pyaudio实现音频控制示例详解
Jul 23 #Python
python高温预警数据获取实例
Jul 23 #Python
Python中的socket网络模块介绍
Jul 23 #Python
python解析照片拍摄时间进行图片整理
Jul 23 #Python
You might like
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
ftp类(example.php)
2006/10/09 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
python Django框架实现自定义表单提交
2016/03/25 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
高级销售员求职信
2013/10/25 职场文书
好军嫂事迹材料
2014/01/15 职场文书
门诊手术室工作制度
2014/01/30 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers