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爬虫之百度API调用方法
Jun 11 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
详解Python import方法引入模块的实例
Aug 02 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
Django中提供的6种缓存方式详解
Aug 05 Python
python3 下载网络图片代码实例
Aug 27 Python
python 动态迁移solr数据过程解析
Sep 04 Python
Pytorch .pth权重文件的使用解析
Feb 14 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 Python
python rolling regression. 使用 Python 实现滚动回归操作
Jun 08 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 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设置session值和cookies的学习示例
2014/03/21 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
javascript 动态创建表格
2015/01/08 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
python 简单的多线程链接实现代码
2016/08/28 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
详解Python3 pandas.merge用法
2019/09/05 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
财务方面个人工作的自我评价
2013/12/28 职场文书
项目开发计划书
2014/01/09 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
鲁迅故里导游词
2015/02/05 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
2015中秋祝酒词
2015/08/12 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
Linux中各个目录的作用与内容
2022/06/28 Servers