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

Multi browsers vs multi tabs in Puppeteer

我有 100 个网页需要测试运行时错误。我找到了可以做到这一点的 Puppeteer 插件 "no sweat",但我 运行 陷入了一个困境:启动一个带有多个选项卡的浏览器或为每个 link 创建一个新浏览器。在这种情况下最好的方法是什么?

如果有多个选项卡,我听说css动画,而其他东西(现在不记得)在选项卡不在焦点上时无法正常工作。

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

以下是我认为每种方法的优点:

多浏览器的优势:

  • 独立进程:如果一个浏览器崩溃,其他浏览器保持运行

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

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

还有使用多个 contexts 的选项,它比两个单独的浏览器需要更少的内存,但不共享 cookie。

所以在现实中,您可能应该同时尝试这两种选择。您可能想看看我写的库 puppteer-cluster,它还负责错误处理和浏览器在崩溃时重新启动。

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

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

只需将 CONCURRENCY_PAGE 替换为 CONCURRENCY_BROWSER 即可尝试使用多个浏览器。还有第三个选项 CONCURRENCY_CONTEXT 您可能想尝试一下。