循环定位器数组并在 Typescript Playwright 中应用断言

问题描述 投票:0回答:3

我有一个定位器数组,我需要运行一个断言来验证它是否包含某些文本。我知道这可以循环完成,但这似乎是一种乏味的方法,我想改进它。

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,希望得到任何支持。谢谢你

javascript typescript automation e2e-testing playwright
3个回答
1
投票
const texts = await page.getByRole('link').allInnerTexts();
expect(texts).toContain(true)

本地剧作家方法从所有匹配的点头中获取内在文本。

参考:https://playwright.dev/docs/api/class-locator#locator-all-inner-texts


0
投票

您还可以根据文本过滤定位器:

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

0
投票

您还可以将定位器选择与所需文本相结合:

const ele = page.locator(`[data-test-id='myId'] >> text=MyText`);
© www.soinside.com 2019 - 2024. All rights reserved.