Python写UI自动化--playwright(通过UI文本匹配实现定位)

本篇简单拓展一下元素定位技巧,通过UI界面的文本去实现定位

目录

匹配XPath

匹配文本元素

.count()统计匹配数量

处理匹配文本返回多个元素

1、使用.nth(index)选择特定元素:

2、获取所有匹配的元素并遍历:

3、错误处理:


匹配XPath

比如我们要定位到下图的"百度一下"

先上代码

python 复制代码
from playwright.sync_api import sync_playwright
def usage_1():
    with sync_playwright() as p:
        #启动谷歌浏览器实例
        browser = p.chromium.launch(headless=False)
        page = browser.new_page()
        page.goto("https://www.baidu.com")
        # 在搜索框中输入关键词
        page.locator('//input[@name="wd"]').fill("搜索")
        # 点击"百度一下"按钮进行搜索
        page.click("//input[@value='百度一下']")

之前我们通过XPath 定位 ://input[@value='百度一下'],这个方法可行。

匹配文本元素

接下来我们使用get_by_text()方法匹配文本元素来实现定位,先断点调试一下

.count()统计匹配数量

get_by_text('需要查询的文本').count() 方法可以帮我们查询统计'百度一下' 文本在此时的UI页面有多少个,result={int}1 这个结果证明只有一个,是唯一的。继续调试

将count()方法换成click()方法,可以看到结果是成功了,现在切回UI检查是否点击'百度一下'成功,显而易见,使用get_by_text('百度一下')方法是可以成功实现元素定位操作的

处理匹配文本返回多个元素

1、使用.nth(index)选择特定元素:

如果你想要选择特定索引的元素,可以使用.nth(index)方法,其中index是从0开始的。

python 复制代码
page.get_by_text('需要匹配的文本').nth(1)  # 获取第二个匹配的元素

2、获取所有匹配的元素并遍历:

如果需要处理所有匹配的元素,可以使用.all()方法来获取一个包含所有匹配元素的列表,然后遍历这个列表。

python 复制代码
elements = page.get_by_text('需要匹配的文本').all()
for element in elements:
    print(await element.inner_text())

3、错误处理:

如果你期望只有一个匹配项,但是可能找到多个,可以检查返回的元素数量,并根据需要抛出异常或采取其他行动。

python 复制代码
elements = page.get_by_text('需要匹配的文本').all()
if len(elements) > 1:
    raise Exception("预期找到一个元素,但实际上找到了多个元素")
element = elements[0]

希望通过以上内容能有效帮助到萌新友友理解使用playwright进行文本匹配操作实现元素定位!

相关推荐
进击的阿尔法猿14 分钟前
docker
运维·docker·容器
北京阿法龙科技有限公司22 分钟前
AR 虚实叠加技术在工业设备运维中的实现流程方案
运维·ar
刘一说29 分钟前
CentOS 系统 Java 开发测试环境搭建手册
java·linux·运维·服务器·centos
万邦科技Lafite32 分钟前
利用淘宝开放API接口监控商品状态,掌握第一信息
大数据·python·电商开放平台·开放api接口·淘宝开放平台
AI人工智能+2 小时前
一种融合AI与OCR的施工许可证识别技术,提升工程监管效率,实现自动化、精准化处理。
人工智能·自动化·ocr·施工许可证识别
Hy行者勇哥2 小时前
Python 与 VS Code 结合操作指南
开发语言·python
大力水手(Popeye)2 小时前
Pytorch——tensor
人工智能·pytorch·python
飞翔的佩奇7 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测
larance7 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
搏博8 小时前
基于Python3.10.6与jieba库的中文分词模型接口在Windows Server 2022上的实现与部署教程
windows·python·自然语言处理·flask·中文分词