javascript 循环遍历Locators数组并在Typescript Playwright中应用Assert

n53p2ov0  于 2023-04-04  发布在  Java
关注(0)|答案(3)|浏览(188)

我有一个定位器数组,我需要运行一个Assert来验证它是否包含某些文本。我知道这可以在一个循环中完成,但它似乎是一个乏味的方法,我想改进它。
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不是很强,希望得到任何支持。谢谢

jpfvwuh4

jpfvwuh41#

const texts = await page.getByRole('link').allInnerTexts();
expect(texts).toContain(true)

本机剧作家的方法,以获得从所有匹配的点头的innertext。
参考:https://playwright.dev/docs/api/class-locator#locator-all-inner-texts

yfjy0ee7

yfjy0ee72#

您还可以基于文本过滤标注:

await expect(page
    .getByRole('listitem'))
    .toHaveText(['apple', 'banana', 'orange']);
hc8w905p

hc8w905p3#

也可以将标注选择与所需文本组合:

const ele = page.locator(`[data-test-id='myId'] >> text=MyText`);

相关问题