【发布时间】:2022-01-16 18:40:54
【问题描述】:
我想知道是否有比text="text" 更指定文本选择的方法?编剧规范不够,而且由于测试的结构,我不能使用其他选择器(有几千个断言,所以我做了自定义命令)
【问题讨论】:
标签: playwright
我想知道是否有比text="text" 更指定文本选择的方法?编剧规范不够,而且由于测试的结构,我不能使用其他选择器(有几千个断言,所以我做了自定义命令)
【问题讨论】:
标签: playwright
使用first() 应该足以断言测试。
await expect(page.locator('text="The Exact Text"').first()).toBeVisible();
【讨论】:
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 和评估更好?
await page.locator(':text-is("The Exact text")')