首页  >  文章  >  web前端  >  如何在 Puppeteer 执行流程中引入延迟和暂停?

如何在 Puppeteer 执行流程中引入延迟和暂停?

Linda Hamilton
Linda Hamilton原创
2024-11-10 04:29:02518浏览

How to Introduce Delays and Pauses in Puppeteer Execution Flow?

控制 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn