我有 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(使用前将#替换为@)