我有一个定位器为
getByRole('cell', {name : 'Hold (10)})
的元素。现在 (2) 是动态的,并且根据条目数量而变化。我如何编写框架来仅检查 Hold 并忽略最后 4 个字符。
尝试过
*
,但我认为这是不正确的。任何帮助表示赞赏。我的页面中有多个带有动态条目后缀的元素,因此这对几乎所有元素都有帮助。
一般来说,我会在这种场景下使用:
await expect(page.getByRole('cell')
.filter({ hasText: 'Some text' })).toBeVisible();
从评论来看,听起来你有一个表格单元格:
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
开头。