控制 Puppeteer 中的执行流程:实现延迟和暂停
在 Puppeteer 中,经常需要暂停或延迟执行,然后再继续后续操作代码行。这对于与网页同步或有效模拟用户交互至关重要。
一种常见的方法是使用 JavaScript 的 setTimeout 函数,该函数将回调和时间间隔作为参数。但是,如提供的代码片段所示,此方法无法在 Puppeteer 的上下文中实现预期结果。
解决方案涉及利用基于 Promise 的方法。一种方法是定义一个延迟函数:
function delay(time) { return new Promise(function(resolve) { setTimeout(resolve, time) }); }
通过调用该函数,在执行流程中引入指定时长的延迟:
console.log('before waiting'); await delay(4000); console.log('after waiting');
Puppeteer 还提供了一个内置的-in waitForTimeout 函数提供对暂停持续时间的直接控制:
await page.waitForTimeout(4000)
此外,如果仍然希望使用 page.evaluate 来引入延迟,那么确保回调函数在期望的间隔:
await page.evaluate(async() => { await new Promise(function(resolve) { setTimeout(resolve, 1000) }); });
通过实现这些延迟技术,您可以有效地控制 Puppeteer 中的执行流程,确保与网页的正确同步和真实交互。
以上是如何在 Puppeteer 执行流程中引入延迟和暂停?的详细内容。更多信息请关注PHP中文网其他相关文章!