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

2024-04-06

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

我听说,在有多个选项卡的情况下,当选项卡不处于焦点时,CSS 动画和其他东西(现在不记得了)可能无法工作。

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


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

多浏览器的优点:

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

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

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

还可以选择使用多个contexts https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-browsercontext,它比两个单独的浏览器需要更少的内存,但不共享 cookie。

所以实际上,您可能应该尝试这两种选择。您可能想看看图书馆傀儡师集群 https://github.com/thomasdondorf/puppeteer-cluster我写的,它还负责错误处理和浏览器在崩溃时重新启动。

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

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

只需更换CONCURRENCY_PAGE with CONCURRENCY_BROWSER尝试多个浏览器。还有第三种选择CONCURRENCY_CONTEXT你可能想尝试一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Puppeteer 中的多浏览器与多选项卡 的相关文章

随机推荐