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中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
python实现简单socket通信的方法
Apr 19 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
pandas 数据实现行间计算的方法
Jun 08 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
python基于Selenium的web自动化框架
Jul 14 Python
Python Django框架模板渲染功能示例
Nov 08 Python
调整Jupyter notebook的启动目录操作
Apr 10 Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 Python
如何在python中处理配置文件代码实例
Sep 27 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 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 Socket配置以及实例的详细介绍
2013/06/13 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
创建简单的node服务器实例(分享)
2017/06/23 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
python list语法学习(带例子)
2013/11/01 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python 对输入的数字进行排序的方法
2018/06/23 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
python 标准差计算的实现(std)
2019/07/29 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
师范生个人推荐信
2013/11/29 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
竞聘书格式及范文
2014/03/31 职场文书
小学生环保倡议书
2014/05/15 职场文书
python字典的元素访问实例详解
2021/07/21 Python
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL