检查元素在 Playwright 中是否可见
Check if element is visible in Playwright
我正在使用 Playwright 1.15.2 进行测试并面临元素可见性的问题。我想检查屏幕上是否可见模态,以便关闭它。模态以display:none
开头,变成display:block
。此外,模态通知表单数据中的错误,因此它可能会或可能不会出现(即我不能 waitForSelector
)。
目前我有类似下面的代码:
const myModal = await page.$("#modal");
if (await myModal.isVisible()) {
await page.waitForSelector('#modal > .modal-dialog > .modal-content > .modal-footer > .btn-close');
await page.click('#modal > .modal-dialog > .modal-content > .modal-footer > .btn-close');
}
我也试过:
const myModal = await page.$("#modal:visible");
if (myModal) {
...
使用 page.$("text=modal title >> visible=true")
或将 page.$
切换为 page.locator
(使用上述所有选择器)也不起作用。
的已接受答案也无效。
有人可以帮我吗?
page.$("text=modal title >> visible=true")
不会等到元素在 DOM 上并且可见。
您需要使用:
await expect(page.locator("text=modal title >> visible=true")).toBeVisible()
看这里:https://playwright.dev/docs/test-assertions#expectlocatortobevisibleoptions
我正在使用 Playwright 1.15.2 进行测试并面临元素可见性的问题。我想检查屏幕上是否可见模态,以便关闭它。模态以display:none
开头,变成display:block
。此外,模态通知表单数据中的错误,因此它可能会或可能不会出现(即我不能 waitForSelector
)。
目前我有类似下面的代码:
const myModal = await page.$("#modal");
if (await myModal.isVisible()) {
await page.waitForSelector('#modal > .modal-dialog > .modal-content > .modal-footer > .btn-close');
await page.click('#modal > .modal-dialog > .modal-content > .modal-footer > .btn-close');
}
我也试过:
const myModal = await page.$("#modal:visible");
if (myModal) {
...
使用 page.$("text=modal title >> visible=true")
或将 page.$
切换为 page.locator
(使用上述所有选择器)也不起作用。
有人可以帮我吗?
page.$("text=modal title >> visible=true")
不会等到元素在 DOM 上并且可见。
您需要使用:
await expect(page.locator("text=modal title >> visible=true")).toBeVisible()
看这里:https://playwright.dev/docs/test-assertions#expectlocatortobevisibleoptions