如何检查元素是否在剧作家的文档中?

How to check if an element is in the document with playwright?

我想测试一个元素是否已经被渲染。所以我想要除了如果存在。有这方面的命令吗?

await page.goto(‘<http://localhost:3000/>');
const logo = await page.$(‘.logo’)

// expect(logo.toBeInDocument())

如果你用page.$()查询一个元素,你可以简单地使用:

const logo = await page.$('.logo');
if (logo) {

}

同样,如果您使用 page.$$() 查询多个元素:

const logo = await page.$$('.logo');
if (logo) {

}

因为这个例子returns(等待之后)一个元素句柄数组,你也可以在条件中使用属性 length

const logo = await page.$$('.logo');
if (logo.length) {

}

所有这些示例中的关键是等待 page.$()page.$$() return.

的承诺

由于 Playwright 团队不鼓励使用 ElementHandle (page.$(), page.$$()),您可以使用 Locator 对象和 count() 方法:

expect(await page.locator('data-testid=exists').count()).toBeTruthy();
expect(await page.locator('data-testid=doesnt-exist').count()).toBeFalsy();

如果您想检查元素是否已呈现(我假设您的意思是可见),您可以使用 toBeVisible 断言:

await expect(page.locator('data-testid=is-visible')).toBeVisible();