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脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
分享Python字符串关键点
Dec 13 Python
python实现SMTP邮件发送功能
Jun 16 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
python+opencv实现霍夫变换检测直线
Oct 23 Python
python后端接收前端回传的文件方法
Jan 02 Python
python多进程重复加载的解决方式
Dec 13 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
python实现学生管理系统开发
Jul 24 Python
Python 在函数上添加包装器
Jul 28 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 Python
Python时间操作之pytz模块使用详解
Jun 14 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
dedecms系统常用术语汇总
2007/04/03 PHP
PHPMailer安装方法及简单实例
2008/11/25 PHP
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
图片之间的切换
2006/06/26 Javascript
Javascript Math对象
2009/08/13 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
Angular 作用域scope的具体使用
2017/12/11 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
详解vue 组件的实现原理
2020/11/12 Javascript
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
python画折线图的程序
2018/07/26 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
会展策划与管理专业求职信
2014/06/09 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
美丽的大脚观后感
2015/06/03 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android
angular4实现带搜索的下拉框
2022/03/25 Javascript
vue使用watch监听属性变化
2022/04/30 Vue.js