在我的木偶脚本中,我尝试打开一个需要 4-5 分钟的网站。页面加载事件完成。那是因为页面上的广告(特别是视频广告)需要很长时间。 这是我的代码片段:
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto(link, {timeout: 0});
// wait until anchor with class=author is visible
await page.waitForSelector('a[class="author"]', {timeout: 0});
在上面的代码中,根据 puppeteer
documentation,默认值为
'waitUntil': 'load'
,因此 await page.waitForSelector(...)
行需要 4-5 分钟。达到。然而,我正在寻找的选择器元素会立即可见,因为它没有通过任何脚本加载。那么我该如何摆脱由于必须等待页面加载完成而导致的长时间延迟呢?
您可以使用
domcontentloaded
代替 load
。
await page.goto(link, {waitUntil: 'domcontentloaded'});
来自关于 DOMContentLoaded、
的 MDN 文档文档完全加载和解析后,将触发 DOMContentLoaded 事件,无需等待样式表、图像和子框架完成加载(加载事件可用于检测完全加载的页面)。