【发布时间】:2022-10-25 10:30:02
【问题描述】:
我试图弄清楚如何检查页面是否已在 Playwright 中完全加载。 await page.waitForLoadState('networkidle'); 在 Javascript 繁重的网站上并不总是适合我。我采取了截图base64,等待100毫秒,重新截图,并比较它们是否相同。然而这似乎并不理想,有什么办法可以询问 Playwright 的最后一个动画帧何时重绘?
【问题讨论】:
标签: playwright
我试图弄清楚如何检查页面是否已在 Playwright 中完全加载。 await page.waitForLoadState('networkidle'); 在 Javascript 繁重的网站上并不总是适合我。我采取了截图base64,等待100毫秒,重新截图,并比较它们是否相同。然而这似乎并不理想,有什么办法可以询问 Playwright 的最后一个动画帧何时重绘?
【问题讨论】:
标签: playwright
有几个选项可以帮助您。
1.解决方案一:
首先,您可以确定最后加载哪个元素,然后继续
page.waitForSelector('yourselector')
甚至等待多个选择器出现
page.waitForSelector('yourselector1','yourselector2')
2.解决方案2
page.waitForLoadState('domcontentloaded')
因为
page.waitForLoadState('networkidle')
默认情况下将等待网络事件,如果 0.5 秒没有网络交易,它会说,我不再需要等待。这就是为什么你可能有随机行为。
【讨论】:
page.on('screencastframe', () => { console.log(1231323);})
page.goto() 时,您可以直接将其作为第二个参数传递:await page.goto(/my-page, { waitUntil: 'networkidle' })。
如果给定的解决方案不适合您,您可以尝试使用定位器。
page.locator(selector[, options])
它有多个类似的 api定位器.isDisabled或者locator.waitFor([选项])或者locator.isVisible([选项])或者locator.frameLocator(选择器)....... 多很多。
【讨论】:
gotoAndWaitTIllIts100PercentLoaded