剧作家 - 通过动态元素的角色定位器获取

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

我有一个定位器为

getByRole('cell', {name : 'Hold (10)})
的元素。现在 (2) 是动态的,并且根据条目数量而变化。我如何编写框架来仅检查 Hold 并忽略最后 4 个字符。

尝试过

*
,但我认为这是不正确的。任何帮助表示赞赏。我的页面中有多个带有动态条目后缀的元素,因此这对几乎所有元素都有帮助。

ui-automation playwright browser-automation
2个回答
0
投票

一般来说,我会在这种场景下使用:

await expect(page.getByRole('cell')
.filter({ hasText: 'Some text' })).toBeVisible();

0
投票

从评论来看,听起来你有一个表格单元格:

const playwright = require("playwright"); // ^1.39.0

const html = `<!DOCTYPE html><html><body>
<table>
  <tr>
    <td>Hold (10)</td>
  </tr>
</table>
</body></html>`;

let browser;
(async () => {
  browser = await playwright.firefox.launch();
  const page = await browser.newPage();
  await page.setContent(html);
  const cell = page.getByRole("cell", {name: /\bhold\b/i});
  console.log(await cell.textContent()); // => Hold (10)
})()
  .catch(err => console.error(err))
  .finally(() => browser?.close());

正则表达式可以是您想要的任何内容。

/\bhold\b/i
不区分大小写并使用单词边界。您可以使用
/^Hold/
确保名称以
Hold
开头。

© www.soinside.com 2019 - 2024. All rights reserved.