终极:新一代最强开源UI自动化测试神器 Playwright - 元素定位
优采云 发布时间: 2022-12-12 14:17终极:新一代最强开源UI自动化测试神器 Playwright - 元素定位
Playwright在使用过程中其实和Selenium非常相似。Playwright也通过元素定位来实现各种功能。我们来看看Playwright的元素定位方式。
文本定位
使用文本定位时,直接使用text=text,比如定位登录按钮,我们可以使用“login”关键字来定位
page.locator("text=登录").click()
CSS 定位
比如id=nav-bar.contact-us-item
page.locator("#nav-bar .contact-us-item").click()
元素属性定位
比如点击“百度点击”,我们可以使用[value='百度点击']来定位
page.locator("[value='百度一下']").click()
组合 CSS 和文本定位
1.:有文本()
has-text() 伪类可用于 css 选择器。它匹配任何收录指定文本的元素,可能在子元素中。匹配不区分大小写并搜索子字符串。例如span:has-text('百度看')匹配百度看
page.locator("span:has-text('百度一下')").click()
2.伪类:has()
父元素收录子元素,比如点击id为s-top-left的元素下收录的第二个a标签
page.locator("#s-top-left:has(a) > a:nth-child(2)").click()
3.伪类:is()
选择任意一个元素,点击【新闻】,如果“新闻”不存在,点击“新闻”
page.click(':is(a:has-text("新闻"), a:has-text("News"))')
<p>
</p>
布局选择器定位
当目标元素缺乏独特的特征时,有时很难为目标元素想出一个好的选择器。在这种情况下,使用 Playwright 布局选择器可能会有所帮助。这些可以与常规 CSS 结合使用。
例如,以下代码匹配文本“用户名”右侧的输入字段 - 当页*敏*感*词*有多个难以区分的输入时很有用。
page.locator("input:right-of(:text('Username'))").click()
:right-of(inner > selector)- 在任何垂直位置匹配与内部选择器匹配的任何元素右侧的元素。
:left-of(inner > selector)- 在任何垂直位置匹配与内部选择器匹配的任何元素左侧的元素。
:above(inner > selector)- 匹配任何水平位置上匹配内部选择器的任何元素之上的元素。
:below(inner > selector)- 在任何水平位置匹配位于与内部选择器匹配的任何元素下方的元素。
:near(inner > selector)- 匹配与内部选择器匹配的任何元素附近(在 50 CSS 像素内)的元素。
# 在“Username”右侧输入TesterRoad
page.locator("input:right-of(:text(> visible=true").click()
找到第 N 个元素
有时页面收录许多相似的元素,很难选择一个特定的元素。例如:
Buy
Buy
Buy
我们可以使用 :nth-match(:text("Buy"), 3) 从上面的 HTML 中选择第三个按钮。请注意,索引从 1 开始。
# 点击第三个按钮 Bug
page.locator(":nth-match(:text('Buy'), 3)").click()
xpath 位置
# 百度首页,使用 xpath 定位输入框,并输入“mrjade”
page.fill("//input[@name='wd']", "mrjade")
# 或者
page.fill("xpath=//*[@id='kw']","mrjade")
总结
Playwright和Selenium的元素定位方式类似,都是定位相同的WEB页面元素,所以区别不大。区别在于它们的定位方法。Selenium 为每个选择器都提供了相应的方法,而 Playwright 只需要编写定位表达式即可,不需要指定具体的方法。从这一点来看,Playwright 很方便。
数据来自
优采云采集器软件是一种网络抓取工具,是
用于网站信息采集、网站信息抓取,包括图片、文字等信息采集处理和发布,是目前互联网数据采集软件的大量使用。由合肥乐威信息技术*敏*感*词*出品,10年打造网络数据采集。
返回: 网站站长工具