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的Bottle框架中使用微信API的示例
Apr 23 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
python实现感知器
Dec 19 Python
Python机器学习logistic回归代码解析
Jan 17 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
python中with语句结合上下文管理器操作详解
Dec 19 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 Python
python实现数字炸弹游戏程序
Jul 17 Python
Python grpc超时机制代码示例
Sep 14 Python
opencv实现图像几何变换
Mar 24 Python
如何在Python项目中引入日志
May 31 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
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
php实现监听事件
2013/11/06 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
js时间比较示例分享(日期比较)
2014/03/05 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
js数组去重的hash方法
2016/12/22 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
Python多线程学习资料
2012/12/19 Python
pyenv命令管理多个Python版本
2017/03/26 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
Python 实现一个简单的web服务器
2021/01/03 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
高中自我鉴定
2013/12/20 职场文书
好人好事事迹材料
2014/02/12 职场文书
典型事迹材料范文
2014/12/29 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
2015年药房工作总结
2015/04/25 职场文书
致运动员加油稿
2015/07/21 职场文书
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android