首页 > 编程语言 >python+playwright 学习-26 locator.filter()过滤定位器

python+playwright 学习-26 locator.filter()过滤定位器

时间:2023-03-09 11:11:24浏览次数:28  
标签:26 playwright get 定位器 filter locator role page

前言

locator.filter()方法可以对locator 定位到的元素进行筛选过滤,可以按文本过滤,也可以按locator定位器过滤。

locator.filter() 文本过滤

考虑以下 DOM 结构,我们要在其中单击第二张产品卡的购买按钮。我们有几个选项可以过滤定位器以获得正确的定位器。

可以使用locator.filter()方法按文本过滤定位器。它将在元素内部某处搜索特定字符串,可能在后代元素中不区分大小写。您还可以传递正则表达式。

page.get_by_role("listitem").filter(has_text="Product 2").get_by_role(
    "button", name="Add to cart"
).click()

或者使用正则表达式

page.get_by_role("listitem").filter(has_text=re.compile("Product 2")).get_by_role(
    "button", name="Add to cart"
).click()

按另一个 locator 过滤

定位器支持仅选择具有与另一个定位器匹配的后代的元素的选项。因此,您可以按任何其他定位器进行过滤,例如locator.get_by_role()、locator.get_by_test_id()、locator.get_by_text()等。

page.get_by_role("listitem").filter(
    has=page.get_by_role("heading", name="Product 2")
).get_by_role("button", name="Add to cart").click()

我们还可以声明产品卡以确保只有一个

expect(
    page.get_by_role("listitem").filter(
        has=page.get_by_role("heading", name="Product 2")
    )
).to_have_count(1)

请注意,内部定位器是从外部定位器开始匹配的,而不是从文档根目录开始。

链式定位器

您可以链接创建定位器的方法,例如page.get_by_text()或locator.get_by_role(),以将搜索范围缩小到页面的特定部分。

在此示例中,我们首先通过定位测试 ID 创建一个名为 product 的定位器。然后我们按文本过滤。我们可以再次使用产品定位器来获取按钮的角色并单击它,然后使用断言来确保只有一个产品带有文本“Product 2”。

product = page.get_by_role("listitem").filter(has_text="Product 2")

product.get_by_role("button", name="Add to cart").click()

标签:26,playwright,get,定位器,filter,locator,role,page
From: https://www.cnblogs.com/yoyoketang/p/17197625.html

相关文章

  • python+playwright 学习-25 expect 常用的断言方法
    前言playwright提供了一个expect方法用于断言expect使用断言描述expect(locator).to_be_checked()Checkboxischeckedexpect(locator).to_be_disable......
  • truenas13 安装urbackup2.5.26
    urbackup是什么,他是备份软件,备份系统和文件是真的方便,下面是官方的说明UrBackup是一个易于设置的开源客户端/服务器备份系统,通过图像和文件备份的组合,可以实现数据安全和快......
  • Filter过滤和Listener监听器
    过滤器Filter简介Filter也称之为过滤器,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些......
  • Filter过滤和Listener监听器
    过滤器Filter简介Filter也称之为过滤器,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些......
  • 升级ArcGIS API for JavaScript 4.26踩坑指南
    背景    之前有个老项目用了4.23的版本,就想着升级到最新,万万没想到折腾了一天,踩了不少坑终于搞好了。版本升级问题    首先升级版本不是改下版本好就行,还要配......
  • python+playwright 学习-22理解Locator 定位机制与元素句柄 ElementHandle
    前言ElementHandle表示页内DOM元素。ElementHandles可以使用page.query_selector()方法创建。如果你能理解ElementHandle和Locator定位机制,那也就明白了selenium......
  • 第126篇: 异步函数(async和await)
    好家伙,本篇为《JS高级程序设计》第十章“期约与异步函数”学习笔记 ES8的async/await旨在解决利用异步结构组织代码的问题。为为此增加了两个新关键字:async和awa......
  • 26. 删除有序数组中的重复项
    https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 26.删除有序数组中的重复项难度简单3051收藏分享切换为英文接收动态反馈给你一个 升序......
  • 【数组】LeetCode 264. 丑数 II
    题目链接264.丑数II思路根据题目中的样例,可以进行拆分\[1,1×2,1×3,2×2,1×5,2×3,2×4,3×3,3×4,3×5\]观察能发现,这些多项式能分成下面三组:\[乘2:......
  • 无线和射频集成电路CC2651R3SIPAT0MOUR/CC2652PSIPMOTR/CC2651P31T0RKPR TxRx + MCU 2
    一、CC2651R3SIPAT0MOUR介绍:CC2651R3SIPA器件是一款多协议2.4GHz无线微控制器(MCU),支持Zigbee®、Bluetooth®5.2LowEnergy、IEEE802.15.4g、TI15.4stack(2.4GHz)......