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 django集成cas验证系统
Jul 14 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
Python微信操控itchat的方法
May 31 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Django封装交互接口代码
Jul 12 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
短波问题解答
2021/02/28 无线电
Symfony数据校验方法实例分析
2015/01/26 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
VBScript版代码高亮
2006/06/26 Javascript
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
vue内置指令详解
2018/04/03 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
Python自动登录126邮箱的方法
2015/07/10 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
python学生信息管理系统(完整版)
2020/04/05 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
python tkinter实现屏保程序
2019/07/30 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
Pandas之缺失数据的实现
2021/01/06 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
小学教研工作制度
2014/01/15 职场文书
关于爱国的标语
2014/06/24 职场文书
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle