【问题标题】:Multi browsers vs multi tabs in PuppeteerPuppeteer 中的多浏览器与多选项卡
【发布时间】:2018-09-07 18:26:27
【问题描述】:

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

如果有多个标签,我听说,当标签不在焦点时,css 动画和其他东西(现在不记得了)有可能不起作用。

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

【问题讨论】:

标签: node.js browser puppeteer


【解决方案1】:

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

多浏览器的优势:

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

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

  • 更少的内存使用:虽然实际上内存和 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你可能想试试。

【讨论】:

  • 它主要是动画的东西(css和js动画)。我害怕的是,直到标签不在焦点上,css动画才会开始播放,这对于浏览器来说是常见的......
  • 然后使用浏览器选项,您可能没问题。试一试,如果它不起作用,请给我看你的代码,我会看看。
猜你喜欢
  • 2012-03-14
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多