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和C语言混合编程实例
Jun 04 Python
Python实例分享:快速查找出被挂马的文件
Jun 08 Python
Python中多线程thread与threading的实现方法
Aug 18 Python
python中requests模块的使用方法
Apr 08 Python
python中__call__内置函数用法实例
Jun 04 Python
python实现12306火车票查询器
Apr 20 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
python wsgiref源码解析
Feb 06 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
图书管理程序(三)
2006/10/09 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
Python检测网站链接是否已存在
2016/04/07 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Python函数中的可变长参数详解
2019/09/12 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
python中pickle模块浅析
2020/12/29 Python
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
weblogic面试题
2016/03/07 面试题
什么是数组名
2012/05/10 面试题
介绍一下代理模式(Proxy)
2014/10/17 面试题
小学防溺水制度
2014/01/29 职场文书
物流专业自荐信
2014/05/23 职场文书
企业法人代表任命书
2014/06/06 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
工程部岗位职责范本
2015/04/11 职场文书
雷锋观后感
2015/06/10 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
Redis基本数据类型List常用操作命令
2022/06/01 Redis