python使用playwright学习笔记-元素定位

Playwright元素定位与操作全解析:从基础到实践 Playwright 元素定位与操作指南 Playwright 提供了多种元素定位策略和操作方法,适用于自动化测试和网页交互场景。 阅读详情

元素定位是UI自动化核心内容,与传统的selenium相比,最大的区别在于selenium是协议的单向的,只负责做而不等待响应,因此需要结合强制等待,隐式等待和显示等待来判定,playwright则有自动等待机制,即做的时候还要等待响应,例如点击操作时,会判定元素是否可点击交互

selenium 

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
element = driver.find_element(By.ID, 'su')
element.click()  # 正常执行
driver.refresh()  # 刷新页面后执行
time.sleep(3)
element.click()  # 执行报错

通过find_element()方法获取的元素进行第一次点击时,正常执行,刷新页面后再次点击报错,因为dom元素重新加载,element是之前的dom元素对象。

playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto('https://www.baidu.com/')
    element = page.locator('#su')  
    element.click()  # 正常执行
    page.reload()
    element.click()  # 正常执行

locator()方法返回的是一个定位器对象,跟selenium不同之处在于,这是动态的,在click()动作执行时才会真正的查找该对象,属于懒查询(需要真正使用时才查询元素)

元素定位

locator()就是playwright核心的定位方法,参数有以下5个:

        selector :接受xpath或css_selector定位元素的字符串参数

        has: 接受一个locator对象,表示匹配selector中包含有该locator的元素

        has_not:接受一个locator对象,表示匹配selector中不包含有该locator的元素

        has_text: 表示匹配指定文本元素,文本在该节点或其后代节点中

        has_not_text: 表示不匹配指定文本元素,文本在该节点或其后代节点中

        has_text和has_not_text还可以接受正则匹配对象

以如下的html为例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="test">
    <h2>测试文本</h2>
</div>
<div class="test">
    <span>测试123</span>
</div>
</body>
</html>

使用has和has_not的方法


    # 后代节点包含h2,高亮对应的测试文本
    page.locator('div', has=page.locator('h2')).highlight()  
    page.wait_for_timeout(2000)
    # 后代节点不包含h2,高亮对象的测试123
    page.locator('div', has_not=page.locator('h2')).highlight()  
    page.wait_for_timeout(2000)

结果如下图:

使用has_text和has_not_text方法

    # 正则匹配包含"测试+至少一个数字"
    page.locator('div', has_text=re.compile(r'测试\d+')).highlight()
    page.wait_for_timeout(2000)
    # 不包含文本测试123,匹配"测试文本"
    page.locator('div', has_not_text='测试123').highlight()
    page.wait_for_timeout(2000)

执行结果如图:

上一篇:python使用playwright学习笔记-安装使用

下一篇:python使用playwright学习笔记-元素操作

Playwright教程基础篇 | 元素定位策略大全 在Web自动化测试中,。:表单控件、交互元素:最接近用户操作视角,抵抗UI样式变更:按钮/链接/提示文本:避免在多语言网站硬编码文本从转变为;掌握语义化定位,提升脚本健壮性。 阅读详情

相关推荐

playwright定位操作

这两个是作为类属性使用的,

Qiu先生的博客 1958

Playwright 常用元素定位方式(基础版)

以上就是我们基础版的元素定位方式,当遇到页面样式比较复杂的页面时,我们会需要一些其他的定位方式,不过都是从基础版升级来的。下一篇介绍进阶版定位方式~2. get_by_text:根据界面文本信息进行定位。包含两个参数,一个是 text标识定位的文本内容,第二个是 exact 表示是否精确匹配。

载_酒i 5534

python+playwright 学习-28 定位多个元素

我们一般定位到页面上唯一的元素再进行操作,有时候一个元素的属性是一样的,会定位到多个元素

qq_27371025的博客 3072

【Playwright+Python】系列之元素定位

默认情况下,page.get_by_test_id() 将根据 data-testid 属性查找元素,但您可以在测试配置中或通过调用 selectors.set_test_id_attribute() 来配置它。Shadow DOM 是技术的一部分,它提供了一种将 HTML 结构、样式和行为封装在一个独立的、封闭的 DOM 中的机制。以下是一个使用 Shadow DOM 的例子,该例子展示了如何创建一个简单的自定义组件,并将内容、样式封装在 Shadow DOM 中。

朱雀随云记的博客 4811

python+playwright 学习-2.Selector 选择器定位元素

Selector 选择器,也就是通常说的元素定位了,页面上点点点的操作,都是基于元素定位,所以这块是重点需要学的核心内容。

qq_27371025的博客 5452

避坑指南:SAP CO模块维护成本控制范围的5个常见错误及解决方法

本文深入剖析了SAP CO模块中维护成本控制范围时最易犯的5个常见错误,包括货币参数配置不当、标准层次结构缺失、财政年度变式不一致、功能激活遗漏及集成参数设置错误。重点针对事务码OKKP的配置,提供了详细的排查步骤与实战解决方案,帮助顾问有效规避陷阱,确保成本核算体系稳定运行。

stone的博客 234

新一代最强开源UI自动化测试神器 Playwright - 元素定位

Playwright和Selenium的元素定位方法有相似之处,因为都是对相同的WEB页面元素进行定位,所以差别不大,区别在于它们的定位方式,Selenium对每种选择器提供了对应的方法,而Playwright只需要写定位表达式就可以了,不需要指定具体方法。从这一点来看,Playwright是非常方便的。

伤心的辣条 6486

DSP28377内存不够用?手把手教你合并RAM/FLASH块,解决CCS20链接器报错

本文详细介绍了在CCS20开发环境中解决DSP28377内存不足问题的方法,通过合并RAM/FLASH块优化CMD文件配置,有效解决链接器报错。文章包含内存布局对比、改写步骤、FreeRTOS集成注意事项及调试技巧,帮助开发者提升内存利用率与项目性能。

weixin_42524762的博客 143

playwright中定位元素的方法

在 Playwright 中,有多种方式可以选择和定位元素,每种方式都可以使用 CSS 选择器或 XPath 表达式进行选择,使开发者可以根据自己的需求和场景进行选择。

DTCloud 4091

利用OrthoFinder做泛基因家族聚类分析

这条命令会将 Arabidopsis_thaliana.TAIR10.59_longest_trans.pep.fa 文件中的所有序列ID,去掉ID中的空格后面的部分,只保留 > 后第一个空格之前的基因ID,并将结果保存在 An1.fasta 文件中。muscle 是一种常用的多序列比对工具,用于基因组或蛋白质序列的比对。基因家族(Gene family),是来源于同一个祖先,由一个基因通过基因重复而产生两个或更多的拷贝而构成的一组基因,它们在结构和功能上具有明显的相似性,编码相似的蛋白质产物。

qq_64400864的博客 2750

本地部署大模型框架 LMStudio和Ollama+WebUI对比

之前我们的辣妈系列文章介绍了很多如何使用Ollama框架+OpenWebUI做很多大模型框架下相关的事情。之后我们也尝试了LMStudio这样一体化的工具。本文介绍下LMStudio 和 Ollama+Web UI 各有优劣,具体选择取决于你的需求。

ms44的专栏 4028

Python+Playwright(3) 元素定位之二

默认情况下,page.get_by_test_id() 将根据 data-testid 属性查找元素,但您可以在测试配置中或通过调用 selectors.set_test_id_attribute() 来配置它。将测试 ID 设置为对测试使用自定义数据属性8.1 方法作用‌自定义属性名‌:将默认的替换为其他 HTML 属性(如data-qa等)‌。‌全局生效‌:设置后所有定位操作均使用新属性名,无需逐条修改定位器‌。# 设置自定义测试 ID 属性为 "data-qa"

qq_58635232的博客 2074

Unity URP热扭曲效果实战:如何让半透明物体也‘动’起来(附完整Shader代码)

本文深入解析Unity URP管线中热扭曲效果无法影响半透明物体的核心原因,并提供一套完整的实战解决方案。通过编写自定义Shader,并巧妙利用URP的Render Objects渲染器功能,成功让指定半透明物体(如粒子特效)也能被扭曲效果影响,从而制作出火焰、热浪等更具视觉冲击力的特效。文末附有完整的Shader代码与进阶优化技巧。

pz890123的博客 501

Python+Playwright(3) 元素定位之一

是 Playwright 自动等待和重试能力的核心部分。简而言之,定位器代表了一种随时在页面上查找元素的方法,以下是常用的内置定位器。

qq_58635232的博客 2216

YOLOv8改进 | 特殊场景检测篇 | 最新的多尺度特征提取DICAM(全网独家首发,增强水下图像的质量)

本文给大家带来的最新改进机制是多尺度特征提取和通道注意力机制DICAM,深度Inception和通道注意力模块(DICAM)主要用于用于增强水下图像的质量、对比度和色偏。所提出的DICAM模型考虑了水下图像的比例退化和不均匀色偏,从而提高图像的质量。通过在两个公开的水下图像增强数据集上的广泛实验,验证了提出的模型在全参考和无参考图像质量评估指标方面。欢迎大家订阅我的专栏一起学习YOLO,购买专栏读者联系读者入群获取进阶项目文件!

Snu77的博客 2216

【QGIS入门实战精品教程】1.2:QGIS与ArcGIS的区别和联系

以下是GISGeography官方给出的两者之间的27点比较(译): 官方网址:https://gisgeography.com/qgis-arcgis-differences/ 1.QGIS容纳更多的数据格式 ArcGIS没有支持所有的数据格式,毫无疑问,QGIS在处理各种类型的数据时非常顺手,QGIS在数据格式方面是个多面手,在使用数据方面是它的长处。 QGIS使用GDAL/OGR库来读取和写入地理信息数据格式,支持超过70种矢量格式。QGIS一开始就是为了与PostGIS协作而诞生的,而支持的名单.

智慧空间实验室 2041

playwright定位元素

UI自动化核心的内容,也是最困难的部分了,就是:定位元素,并去对定位到的元素进行一系列相关的操作。想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如果连元素都定位不到,后续什么操作都是无用功,都是扯淡,因此宏哥建议小伙伴或者同学们从这里开始就要跟紧宏哥的脚步,一步一个脚印的将基础打结实,不要到后期了要定位操作元素了,到处找人问到处碰壁。说到元素定位,小伙伴或者童鞋们肯定会首先想到 selenium 的八大元素定位大法。同理Playwright也有自己的元素定位的方法。

csdn_te_blog_014的博客 1032

【运动规划算法项目实战】Artificial Potential Field算法(附ROS C++代码)

在机器人行业中,路径规划是一个关键的任务,它涉及到如何让机器人在复杂的环境中安全而高效地移动。人工势场算法(Artificial Potential Field Algorithm)是一种常用的路径规划方法,它借鉴了物理学中的势能概念,通过模拟力的作用来引导机器人的移动。本文将详细介绍人工势场算法的原理、在路径规划中的应用、算法优缺点以及代码实现。人工势场算法基于两种势场:斥力场和引力场。斥力场使机器人远离障碍物,而引力场将机器人吸引到目标位置。

xiewf的博客 1万+

Playwright元素定位完全指南:从基础选择器到动态元素捕捉

本文系统介绍了Playwright自动化工具中的元素定位技巧,重点分析了其核心优势:自动等待机制、多选择器支持和智能重试功能。详细讲解了CSS/XPath选择器的使用方法,包括按ID、类名、属性等基础定位方式,以及Playwright特有的文本定位(text=)和布局定位(:visible)等高级功能。文章还提供了处理动态元素、iframe/阴影DOM等复杂场景的解决方案,并推荐了调试验证工具和最佳实践。最后通过电商网站实战案例,演示了从搜索到加购的完整流程,强调元素定位的本质是找到能唯一标识目标的稳定特征

m0_58868237的博客 2650

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Web自动化测试之playwright:Web元素定位

要对web页面进行控制,首先需要定位到页面对应的元素,和Selenium一样,playwright也支持多种元素定位方法,下面来介绍它支持的元素选择器。 目录Text 定位属性值定位xpath定位css selector 定位CSS常规用法定位可见元素伪类:`:has() `伪类:`:is() `通过页面布局定位元素组合定位定位第n个元素:`:nth-match()`完整测试代码总结 playwright主要的选择器: Locator Description text 文本值 css s

测试开发小记 9614

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

playwright如何精确实现元素定位(方法合集)

本文介绍了Playwright中元素定位的多种方法,包括CSS样式/Tag定位、元素层级关系匹配、元素特征定位以及XPath等高级定位方式。重点讲解了通过id(#)、类名(.)、tag名称的CSS选择器语法,以及父子元素(>)、兄弟节点(+/~)等层级关系的定位技巧。此外还介绍了XPath定位、文本定位(get_by_text)和ARIA角色定位等实用方法,并提供了丰富的代码示例,帮助开发者根据实际场景选择最合适的定位策略,提高自动化测试和爬虫开发的效率。

种一棵树最好的时间是十年前,其次是现在 1950

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python+Playwright常用元素定位方法

element):直接使用HTML元素名称来定位,例如p会选择所有段落元素。attribute):选择所有具有指定属性的元素,无论该属性的值是什么。例如,[title]会选择所有包含title属性的元素。选择具有指定属性,并且该属性值完全等于给定值的元素。例如,会选择所有type属性值为 "submit" 的元素。选择具有指定属性,且属性值中任意位置包含给定值的元素。例如,会选中所有 class 属性值中包含 "highlight" 文本的元素。选择具有指定属性,且属性值以给定值开始的元素。

HAMYHF的博客 1793

Python写UI自动化--playwright(元素定位)

playwright(元素定位)保姆级教程

qq_52758588的博客 2675

【Python】Playwright:元素操作

在使用 Playwright 进行 Web 自动化的过程中,操作页面上的元素是最核心的部分。本文将详细介绍如何在 Playwright 中查找并操作页面元素,学习如何使用不同的选择器(如 CSS 选择器、XPath),以及如何模拟用户操作(如点击按钮、滚动页面、键盘输入和文件上传)。通过这些操作,你可以在 Web 页面上执行各种自动化任务。

2303_80346267的博客 2509

如何使用Python和 Playwright 实现控件查找及定位的

如何使用和 Playwright 实现控件查找及定位的。下面我们简单了解一下。

weixin_44872675的博客 1461

2025年最新Python+Playwright自动化测试- 隐藏元素定位与操作

对于前端隐藏元素,一直是自动化定位元素的隐形杀手,让人防不胜防。脚本跑到隐藏元素时位置时报各种各样的错误,可是这种隐藏的下拉菜单又没有办法避免,所以非常头痛,这一篇只为交流隐藏元素自动化定位处理方法以及宏哥自己的一点浅薄见解。隐藏元素,熟悉前端的或者HTML的小伙伴或者童鞋们一定不陌生,元素的属性隐藏和显示,主要是 type="hidden"和style="display: none;"属性来控制的,当然了还有其他的方法控制,宏哥这里就不详细说明了,有兴趣的小伙伴或者童鞋们可以自己查一下资料。

1108
上一篇: python使用playwright学习笔记-安装使用
下一篇: python使用playwright学习笔记-元素操作
天高孤影心无涯
博客等级 码龄6年 25粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值