我在 Playwright Typescript 测试中有以下代码。
await page.locator('label')
.filter({ hasText: 'Berechtigtes Interesse (32' )
.locator('span')
.nth(2)
.click();
要匹配的元素如下:
input type="checkbox" role="button" aria-label="Berechtigtes Interesse (32 Anbieter), Verwendung reduzierter Daten zur Auswahl von Werbeanzeigen" aria-pressed="true" tabindex="0" class="fc-preference-legitimate-interest purpose" data-id="2" id="fc-preference-slider-purpose-2" checked=""
问题是这个标签可能会改变,即“Berechtigtes Interesse(32”),我想让代码更加健壮。
由于标签以“Berechtigtes Interesse”开头的元素较多,我希望并尝试过滤标签的第二部分,该部分是独一无二的 --> ...“Verwendung reduzierter Daten zur Auswahl von Werbeanzeigen”,但它不起作用!
我是否遗漏了一些关于
的内容?
一个选项是属性选择器
$
,表示以:结尾
import {expect, test} from "@playwright/test"; // ^1.39.0
const html = `<!DOCTYPE html><html><body>
<input type="checkbox" role="button" aria-label="Berechtigtes Interesse (32 Anbieter), Verwendung reduzierter Daten zur Auswahl von Werbeanzeigen" aria-pressed="true" tabindex="0" class="fc-preference-legitimate-interest purpose" data-id="2" id="fc-preference-slider-purpose-2" checked="">
</body></html>`;
test("button is disabled during the request", async ({page}) => {
await page.setContent(html);
const input = page.locator(
'[aria-label$="Verwendung reduzierter Daten zur Auswahl von Werbeanzeigen"]'
);
await expect(input).toBeVisible();
});