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和ruby,我选谁?
Sep 13 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
python3爬虫GIL修改多线程实例讲解
Nov 24 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
python实现腾讯滑块验证码识别
Apr 27 Python
Python 阶乘详解
Oct 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
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
js实现一键复制功能
2017/03/16 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
基于python编写的微博应用
2014/10/17 Python
python魔法方法-自定义序列详解
2016/07/21 Python
python实现发送邮件功能
2017/07/22 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
django将数组传递给前台模板的方法
2019/08/06 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
python解包用法详解
2021/02/17 Python
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
SQL中where和having的区别
2012/06/17 面试题
自我鉴定的范文
2013/10/03 职场文书
12岁生日感言
2014/01/21 职场文书
安全大检查反思材料
2014/01/31 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
预备党员自我评价范文
2015/03/04 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
学生检讨书范文
2019/06/24 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android