如何使用 Playwright 管理标签中的动态文本?

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

我在 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”,但它不起作用!

我是否遗漏了一些关于

 
的内容?

typescript filter label playwright dynamic-text
1个回答
0
投票

一个选项是属性选择器

$
,表示以:

结尾
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&nbsp;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();
});
© www.soinside.com 2019 - 2024. All rights reserved.