Puppeteer 中的多浏览器与多选项卡

Mar*_* G. 2 browser node.js puppeteer

我有 100 个网页,我必须测试运行时错误。我发现 Puppeteer 插件可以“毫不费力”地做到这一点,但我遇到了一个难题:启动一个带有多个选项卡的浏览器或每个链接的新浏览器。在这种情况下最好的方法是什么?

在多个标签的情况下,我听到了,有机会在标签不在焦点时,有一个CSS动画和其他(现在不记得)不会工作。

显然,多个浏览器会导致更高的 CPU 负载(不是吗?)

Tho*_*orf 6

这些是我认为每种方法的优点:

多浏览器的优势:

  • 单独的进程:如果一个浏览器崩溃,其他浏览器会继续运行

一个浏览器的优势(多页面):

  • 更少的内存使用:尽管实际上内存和 CPU 使用在很大程度上取决于您正在执行的任务(屏幕截图、DOM 操作)
  • 共享 cookie(和其他数据)

还可以选择使用多个上下文,这比两个单独的浏览器需要更少的内存,但不共享 cookie。

因此,实际上,您可能应该尝试两种选择。你可能想看看我写的库pupteer-cluster,它也负责错误处理和浏览器在崩溃的情况下重新启动。

您只需编写代码,只需一行即可在多个浏览器和多个页面之间切换:

const cluster = await Cluster.launch({
    concurrency: Cluster.CONCURRENCY_PAGE, // which kind of concurrency
    maxConcurrency: 2, // number of parallel workers
});
Run Code Online (Sandbox Code Playgroud)

只需更换CONCURRENCY_PAGECONCURRENCY_BROWSER给多个浏览器一试。CONCURRENCY_CONTEXT您可能还想尝试第三种选择。