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中文件遍历的两种方法
Jun 16 Python
Python实现Const详解
Jan 27 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
对Python中gensim库word2vec的使用详解
May 08 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
Python中logging实例讲解
Jan 17 Python
Python button选取本地图片并显示的实例
Jun 13 Python
Puppeteer使用示例详解
Jun 20 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
python批量修改xml属性的实现方式
Mar 05 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php检测useragent版本示例
2014/03/24 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php中执行系统命令的方法
2015/03/21 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
python插入排序算法的实现代码
2013/11/21 Python
python自动化测试之连接几组测试包实例
2014/09/28 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Django自定义分页效果
2017/06/27 Python
关于Python-faker的函数效果一览
2019/11/28 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
css3 响应式媒体查询的示例代码
2019/09/25 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
EJB的激活机制
2013/10/25 面试题
教师绩效工资方案
2014/02/01 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技