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

时间:2018-09-07 18:26:27

标签: node.js browser puppeteer

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

听说,如果有多个选项卡,则当选项卡不清晰时,css动画和其他内容(现在不记得了)可能无法正常工作。

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

1 个答案:

答案 0 :(得分:2)

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

多个浏览器的优势:

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

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

  • 更少的内存使用量:尽管实际上内存和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