在 Puppeteer 中延迟执行
在 Puppeteer 中,可以通过各种方法来实现在继续执行之前有效等待指定的时间。一种常见的方法是在评估函数中使用 setTimeout 函数。但是,您可能会遇到 setTimeout 似乎被绕过的情况。
要解决此问题,您可以实现一个利用 Promise 的自定义延迟函数。定义一个名为delay(time)的函数,它接受一个时间参数并返回一个Promise。在此函数中,设置 setTimeout 解析器以暂停执行指定的时间。
function delay(time) { return new Promise(function (resolve) { setTimeout(resolve, time) }); }
然后,只要您希望引入 4 秒的延迟,就可以调用delay(4000)。
console.log('before waiting'); await delay(4000); console.log('after waiting');
或者,Puppeteer 提供了一个内置的 waitForTimeout 函数来简化该过程。只需使用 page.waitForTimeout(4000)。
如果你坚持使用 page.evaluate,你可以在所需的延迟后解决 Promise。以下代码演示了这种方法:
await page.evaluate(async () => { await new Promise(function (resolve) { setTimeout(resolve, 1000) }); });
以上是如何在 Puppeteer 中实现延迟:setTimeout 与 waitForTimeout?的详细内容。更多信息请关注PHP中文网其他相关文章!