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进行文本匹配操作实现元素定位!

相关推荐
博洋科技几秒前
网站建设的服务器该如何选择?
运维·服务器·网站建设·保定响应式网站建设·保定h5网站建设·保定网站建设
人类群星闪耀时5 分钟前
服务器管理:从零开始的服务器安装与配置指南
运维·服务器
NiNg_1_2341 小时前
使用Docker Compose一键部署
运维·docker·容器
鸽芷咕1 小时前
【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
开发语言·python·机器学习·bug·paddle
萠哥啥都行1 小时前
Linux安装Docker以及Docker入门操作
运维·docker·容器
小江湖19941 小时前
元数据保护者,Caesium压缩不丢重要信息
运维·学习·软件需求·改行学it
子午1 小时前
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
人工智能·python·cnn
gopher95111 小时前
linux驱动开发-中断子系统
linux·运维·驱动开发
风等雨归期1 小时前
【python】【绘制小程序】动态爱心绘制
开发语言·python·小程序
Adolf_19931 小时前
Flask-JWT-Extended登录验证, 不用自定义
后端·python·flask