首页 > 解决方案 > 类似于 Puppeteer 中的 document.ready() 的功能?

问题描述

有类似document.ready()的东西Puppeteer吗?

有:

page.waitForSelector(selector)

既然任何一个 HTML 页面上都有这么多同名选择器,那么这个函数怎么能确定正确的页面已经加载呢?这是一个简单的功能,但在我之前使用它时引起了很多错误page.content()。我不确定这个功能遗漏了什么。

标签: javascriptnode.jsgoogle-chrome-devtoolspuppeteerheadless-browser

解决方案


您可以使用page.waitForNavigation()jQuery 函数的替代document.ready()方法:

await page.waitForNavigation({waitUntil: 'load'});             // consider navigation to be finished when the load event is fired.
await page.waitForNavigation({waitUntil: 'domcontentloaded'}); // consider navigation to be finished when the DOMContentLoaded event is fired.
await page.waitForNavigation({waitUntil: 'networkidle0'});     // consider navigation to be finished when there are no more than 0 network connections for at least 500 ms.
await page.waitForNavigation({waitUntil: 'networkidle2'});     // consider navigation to be finished when there are no more than 2 network connections for at least 500 ms.

或者,您可以使用waitUntil选项 inpage.goto()等待文档加载:

await page.goto('https://example.com/', {waitUntil: 'load'});
await page.goto('https://example.com/', {waitUntil: 'domcontentloaded'});
await page.goto('https://example.com/', {waitUntil: 'networkidle0'});
await page.goto('https://example.com/', {waitUntil: 'networkidle2'});

推荐阅读