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基于queue和threading实现多线程下载实例
Oct 08 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
Python玩转Excel的读写改实例
Feb 22 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
PyTorch中常用的激活函数的方法示例
Aug 20 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
python实现网站微信登录的示例代码
Sep 18 Python
python构建指数平滑预测模型示例
Nov 21 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
tensorflow与numpy的版本兼容性问题的解决
Jan 08 Python
matplotlib交互式数据光标实现(mplcursors)
Jan 13 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 数组入门教程小结
2009/05/20 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
JavaScript使用cookie
2007/02/02 Javascript
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
《傅雷家书》教学反思
2014/04/20 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
项目战略合作意向书
2015/05/08 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
小学英语教学反思范文
2016/02/15 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
python实现过滤敏感词
2021/05/08 Python
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
Python初识逻辑与if语句及用法大全
2021/08/07 Python
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android
Java使用HttpClient实现文件下载
2022/08/14 Java/Android