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框架中的模版继承
Jul 16 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
python中如何使用分步式进程计算详解
Mar 22 Python
elasticsearch python 查询的两种方法
Aug 04 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
python打包生成so文件的实现
Oct 30 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
Python实现我的世界小游戏源代码
Mar 02 Python
Python中的min及返回最小值索引的操作
May 10 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(2)
2006/10/09 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
python二元表达式用法
2019/12/04 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
毕业生就业自荐信
2013/12/04 职场文书
社区十八大感言
2014/01/19 职场文书
关于运动会的稿件
2014/02/02 职场文书
个人党性剖析材料
2014/02/03 职场文书
函授药学自我鉴定
2014/02/07 职场文书
校庆接待方案
2014/03/18 职场文书
环保公益策划方案
2014/08/15 职场文书
党性分析材料格式
2014/12/19 职场文书
幸福来敲门观后感
2015/06/04 职场文书
煤矿施工安全协议书
2016/03/22 职场文书