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正则表达式介绍
Aug 06 Python
Python常用列表数据结构小结
Aug 06 Python
Python类的专用方法实例分析
Jan 09 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
python中的数据结构比较
May 13 Python
python字典改变value值方法总结
Jun 21 Python
Python 文件数据读写的具体实现
Jan 24 Python
python中判断数字是否为质数的实例讲解
Dec 06 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
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
Python subprocess模块详细解读
2018/01/29 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
经理职责范文
2013/11/08 职场文书
手工社团活动方案
2014/02/17 职场文书
入股协议书范本
2014/04/14 职场文书
小学运动会演讲稿
2014/08/25 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
煤矿安全保证书
2015/02/27 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
入党介绍人考察意见
2015/06/01 职场文书
复活读书笔记
2015/06/29 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
Python上下文管理器Content Manager
2021/06/26 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript