typescript 如何在Playwright中编写waitForElementText方法

roejwanj  于 12个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(180)

我想有waitForElementText()在剧作家。
例如,我在每一页上都有标题cssSelector = '.header-name'
我从主页导航到用户
我向该方法传递两个参数:waitForElementText( locator: string, expectedText: string)
我想等待标题名称从Home → Users更改
我尝试使用page.waitForFunction()方法,但我得到错误:

page.waitForFunction: TypeError: Cannot read properties of undefined (reading 'locator')

字符串

7xzttuei

7xzttuei1#

由于Playwright的定位器的API会自动等待元素,并且有一个基于文本的选择器,因此waitForText已经作为getByText存在于API中:

await page.getByText("Users"); // for a substring match

// or an "exact" match (after whitespace normalization):
await page.getByText("Users", {exact: true});

// or as an assertion:
await expect(page.getByText("Users", {exact: true})).toBeVisible();

字符串
如果这还不足以消除元素的歧义,你可以链接定位器:

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

const html = `<!DOCTYPE html><html><body>
<h1 class="header-name">  Users  </h1></body></html>`;

let browser;
(async () => {
  browser = await playwright.firefox.launch();
  const page = await browser.newPage();
  await page.setContent(html);
  await page
   .locator(".header-name")
   .getByText("Users", {exact: true})
   .waitFor();
})()
  .catch(err => console.error(err))
  .finally(() => browser?.close());

fdbelqdn

fdbelqdn2#

对HaveText使用自动重试Assert:
等待,直到指针指向具有给定文本的元素。您也可以使用正则表达式来获取值。

const locator = page.locator('.title');
await expect(locator).toHaveText(/Welcome, Test User/);
await expect(locator).toHaveText(/Welcome, .*/);

字符串

相关问题