代码之家  ›  专栏  ›  技术社区  ›  phihag

在puppeteer中加速window.setTimeout

  •  0
  • phihag  · 技术社区  · 6 年前

    我正在加载一个web应用程序,它利用了puppeter中的各种长超时,并希望跳过所有这些超时。我怎么打每个电话给你 setTimeout 从网页快速返回,不管延迟?

    1 回复  |  直到 6 年前
        1
  •  0
  •   phihag    6 年前

    覆盖 setTimeout page.evaluateOnNewDocument :

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

    你也可以做一个类似的版本 setInterval ,如果您的web应用程序使用它。请注意,这似乎弄乱了木偶的 page.waitForFunction (它只执行一次),因此您可能需要使用

    window.setTimeout = window._real_setTimeout;
    

    如果你想要真实的行为。