在 puppeteer 中加速 window.setTimeout

Speed up window.setTimeout in puppeteer

我正在加载一个使用各种长时间超时的网络应用程序,在 puppeteer 中,我想跳过所有这些超时。如何快速从网页 return 拨打 setTimeout 的每个电话,无论延迟如何?

覆盖 page.evaluateOnNewDocument 中的 setTimeout

await page.evaluateOnNewDocument(() => {
    window._real_setTimeout = window.setTimeout;
    window.setTimeout = (func, delay, ...args) => {
        return window._real_setTimeout(func, 10, ...args);
    };
});

如果您的 Web 应用程序使用它,您也可以为 setInterval 做一个类似的版本。请注意,这似乎与 puppeteer 的 page.waitForFunction 混淆(它只执行一次),因此您可能需要使用

恢复真正的功能
window.setTimeout = window._real_setTimeout;

如果你想要真实的行为。