在沙盘中运行多个浏览器实例的配置

By admin 2026年11月7日

在沙盘中运行多个浏览器实例的配置

如果你指的是在 Playwright 沙盘环境里并行运行多个浏览器实例,可以按下面配置。每个 worker 启动一个独立浏览器进程;同一浏览器内也可以用多个 BrowserContext 隔离会话。

// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  fullyParallel: true,
  workers: 4, // 并行 worker 数;通常不超过可用 CPU 核数
  use: {
    headless: true,
    browserName: 'chromium',
  },
});

容器中运行时,建议使用 Playwright 官方镜像,并为 Chromium 分配足够的共享内存:

docker run --rm \
  --shm-size=1g \
  -v "$PWD:/work" -w /work \
  mcr.microsoft.com/playwright:v1.51.0-noble \
  npx playwright test

如果是在自己的 Node.js 脚本中启动多个实例:

import { chromium } from 'playwright';

const browsers = await Promise.all(
  Array.from({ length: 3 }, () =>
    chromium.launch({ headless: true })
  )
);

try {
  // 每个 browser 是独立进程;context 用于隔离 cookie、缓存和页面
  const contexts = await Promise.all(
    browsers.map(browser => browser.newContext())
  );
  // 在各 context 中创建页面并执行任务
} finally {
  await Promise.all(browsers.map(browser => browser.close()));
}

建议根据内存和 CPU 调整实例数;浏览器实例过多会导致内存不足或测试变慢。通常优先增加 BrowserContext,只有需要独立进程或不同浏览器配置时才增加浏览器实例。生产或 CI 环境尽量不要使用 --no-sandbox;如果沙盘本身限制了 Chromium 启动,再根据具体运行环境处理。

如果你使用的不是 Playwright(例如 Puppeteer、Selenium 或某个云端沙盘),请告诉我框架和运行方式,我可以给出对应配置。