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实现删除文件但保留指定文件
Jun 21 Python
华为2019校招笔试题之处理字符串(python版)
Jun 25 Python
python实现关闭第三方窗口的方法
Jun 28 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
python打开文件的方式有哪些
Jun 29 Python
浅析Python 责任链设计模式
Sep 11 Python
基于Python中Remove函数的用法讨论
Dec 11 Python
Python爬虫基础初探selenium
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)
2010/09/04 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
解决python报错MemoryError的问题
2018/06/26 Python
python简单贪吃蛇开发
2019/01/28 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
最新销售员个人自荐信
2013/09/21 职场文书
体育专业个人的求职信范文
2013/09/21 职场文书
化学学院毕业生自荐信范文
2013/12/17 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers