我有一个定位器数组,我需要运行一个断言来验证它是否包含某些文本。我知道这可以循环完成,但这似乎是一种乏味的方法,我想改进它。
Tedius 方法:
let textIsPresent : boolean = false;
for (let entry of arrayOfLocators) {
if(arrayOfLocators[entry].innerText().toContain("myText")){
textIsPresent = true;
break;
}
}
expect(textIsPresent).toBe(true)
有更好的方法吗?例如,使用匿名函数甚至内置智能函数?我不太擅长 Javascript/Typescript,希望得到任何支持。谢谢你
const texts = await page.getByRole('link').allInnerTexts();
expect(texts).toContain(true)
本地剧作家方法从所有匹配的点头中获取内在文本。
参考:https://playwright.dev/docs/api/class-locator#locator-all-inner-texts
您还可以根据文本过滤定位器:
await expect(page
.getByRole('listitem'))
.toHaveText(['apple', 'banana', 'orange']);
您还可以将定位器选择与所需文本相结合:
const ele = page.locator(`[data-test-id='myId'] >> text=MyText`);