【问题标题】:How to specify text even more?如何进一步指定文本?
【发布时间】:2022-01-16 18:40:54
【问题描述】:

我想知道是否有比text="text" 更指定文本选择的方法?编剧规范不够,而且由于测试的结构,我不能使用其他选择器(有几千个断言,所以我做了自定义命令)

【问题讨论】:

    标签: playwright


    【解决方案1】:

    使用first() 应该足以断言测试。

    await expect(page.locator('text="The Exact Text"').first()).toBeVisible();

    【讨论】:

      【解决方案2】:

      https://playwright.dev/docs/selectors#text-selector

      您可以使用 JavaScript 正则表达式来获取您需要的内容,如文档中所述,这里有几个示例:

      /Log\s*in/i - 正文可以是包裹在 / 符号中的类似 JavaScript 的正则表达式。例如,text=/Log\s*in/i 匹配登录和登录。

      await page.click('text=/Log\\s*in/i');
      

      或者使用文本匹配:

      #nav-bar :text-matches("reg?ex", "i") - :text-matches() 伪类可以在 css 选择器中使用,用于基于正则表达式的匹配。此示例等效于 text=/reg?ex/i,但在 #nav-bar 元素内。

      【讨论】:

      • 感谢您的回复!问题如下:在我正在测试的网页上,有几个文本定位器,​​所有这些都包含相同的文本片段。例如,当我使用"'The Exact text'" 时,我得到带有文本'The Exact text''Some Other TextThe Exact text' 的选择器,这是我要解决的问题。我使用定位器功能,也许使用 elementHandles 和评估更好?
      • 您可以在定位器上使用 eval,这是推荐的。要获得您想要使用的确切信息:await page.locator(':text-is("The Exact text")')
      猜你喜欢
      • 2015-06-07
      • 1970-01-01
      • 2021-02-18
      • 2010-11-08
      • 2019-02-07
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 2019-05-12
      相关资源
      最近更新 更多