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 相关文章推荐
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
python中的代码编码格式转换问题
Jun 10 Python
Python实现二叉搜索树
Feb 03 Python
python 垃圾收集机制的实例详解
Aug 20 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
python 按钮点击关闭窗口的实现
Mar 04 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
利用Python函数实现一个万历表完整示例
Jan 23 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 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中PDO的错误处理
2011/09/04 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
php类常量用法实例分析
2015/07/09 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
基于jquery 的一个progressbar widge
2010/10/29 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
Python with标签使用方法解析
2020/01/17 Python
Django通过json格式收集主机信息
2020/05/29 Python
python绘图模块之利用turtle画图
2021/02/12 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
保险专业大专生求职信
2013/10/26 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
运动会广播稿80字
2014/01/23 职场文书
致接力运动员广播稿
2014/02/17 职场文书
取保候审保证书
2014/04/30 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js