您可以使用您希望元素具有的条件。例如,在 Playwright 的主页上,您希望 .navbar__brand 类的元素可见,但您也希望 .notexists 类的元素不可见(在这种情况下,该元素将不存在)。然后你可以这样做:
test('element does exist @pass', async ({ page }) => {
await page.goto('https://playwright.dev/');
const locator = await page.locator('.navbar__brand').isVisible();
expect(locator).toBeTruthy();
});
test('element does NOT exist @fail', async ({ page }) => {
await page.goto('https://playwright.dev/');
const locator = await page.locator('.notexists').isVisible();
expect(locator).toBeTruthy();
});
当然,这样做会返回相同的结果:
test('element does exist @pass', async ({ page }) => {
await page.goto('https://playwright.dev/');
expect(await page.locator('.navbar__brand').isVisible()).toBe(true);
});
test('element does NOT exist @fail', async ({ page }) => {
await page.goto('https://playwright.dev/');
expect(await page.locator('.notexists').isVisible()).toBe(true);
});
正如我所说,元素的条件取决于你。例如,如果你想断言一个具有可见性的元素:hidden 也不存在于 DOM 中,因为它根本不应该存在,你可以将可见性和 .isHidden() 条件包装在 if/else 等中。当然,您可以随意使用布尔值(toBe(true)/toBe(false)、toBeTruthy()/toBeFalsy())。
这些不是最优雅的解决方案,但我希望它们能提供帮助。