javascript - 如何在不影响速度的情况下打开多个 puppeteer 实例

标签 javascript node.js url automation puppeteer

所以发生在我身上的是,当我打开 1 个 puppeteer 实例时,它会运行得很快,但我打开的次数越多,加载 URL + 填充信息所需的时间就越多,这是正常的吗?

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({ path: 'example.png' });

  await browser.close();
})();

最佳答案

回答
的表演

  • 多个 pupeteer 实例
  • 在同一台机器上运行
  • 测试单个应用程序

  • 高度依赖于您机器的性能 (4 cored , 8 threads , corei7 7700hq)
    在我的本地设置中,我无法运行超过 10 个并行实例,并且我启动的实例越多,性能下降就越明显。
    我的故事
    当我试图模拟多个用户并行使用同一个应用程序时,我也遇到了类似的挑战。
    我知道 : pupeteer (和/或) 类似的 ui-test-automation 工具是 不是很好的压力测试工具你的申请;或者那个:有更好的工具。
    尽管如此,我的情况是:
  • 运行“类似用户”的行为
  • 来自世界的另一端
  • 收藏HAR文件 - 代表浏览器与 10-20 个不同系统交互的网络时间
  • 分析行为

  • 我的方法是-也许这可以帮助您:
  • 创建 puppeteer 测试
  • 启用 headless 运行
  • 使其可通过 curl 触发
  • 将其 Docker 化
  • 运行 docker 10 台不同机器上的图像(5-10 dockerized pupeteer 测试/机器)
  • 通过 curl 一次性触发它们

  • plantuml pupeteer usage scenario

    关于javascript - 如何在不影响速度的情况下打开多个 puppeteer 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66784568/

    相关文章:

    node.js - 如何从一个socket.io Node 应用程序向另一个socket.io Node 应用程序发送消息

    Node.js 通过表单提交将值从 View 传递到 Controller

    javascript - 如何管理应用程序和 URL 中的状态?

    jquery - 将外部内容加载到 div 中时的导航

    javascript - 试图让第二个按钮和第一个按钮一样工作

    javascript - Mongoose - TypeError : object is not a function

    javascript - Bootstrap轮播移动问题

    Node.js 从本地文件安装

    regex - 是否可以合并显示在Google Analytics(分析)中的不同网址?

    javascript - 将数据从 localStorage 保存到 csv