You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright重复执行操作触发browser.closed错误求助

解决Playwright中browser.closed错误的方案

核心原因分析

重复在"Code In It"按钮和"Go back to the form"链接间跳转时,易出现页面导航未完成就触发新操作、浏览器上下文被意外回收的情况,进而触发browser.closed错误。

具体修复方案

1. 明确等待页面加载状态

在每次点击操作后,强制等待页面进入稳定状态,避免异步操作冲突:

// 点击"Code In It"后等待网络空闲
await page.click('text="Code In It"');
await page.waitForLoadState('networkidle');

// 返回表单后同样等待加载完成
await page.click('text="Go back to the form"');
await page.waitForLoadState('networkidle');

2. 跟踪新页面实例,避免上下文混乱

通过上下文事件跟踪新打开的页面,确保操作对象准确,防止原页面实例被意外销毁:

const [newPage] = await Promise.all([
  context.waitForEvent('page'),
  page.click('text="Code In It"')
]);
await newPage.waitForLoadState('networkidle');

// 在新页面完成操作后返回表单
await newPage.click('text="Go back to the form"');
await page.waitForLoadState('networkidle');
await newPage.close();

3. 调整浏览器上下文配置

启动浏览器时禁用潜在的自动清理机制,防止上下文被提前回收:

const browser = await playwright.chromium.launch({ headless: false });
const context = await browser.newContext({
  ignoreHTTPSErrors: true,
  viewport: { width: 1280, height: 720 }
});

4. 重装依赖清理缓存

即使是最新版本,也可能存在缓存异常,执行以下命令彻底更新:

npm uninstall playwright
npm install playwright@latest
npx playwright install --with-deps chromium

验证步骤

  • 在VSCode中直接运行测试脚本,观察是否仍触发browser.closed错误。
  • 使用npx playwright test --ui模式重复执行跳转流程,确认脚本稳定完成。

内容的提问来源于stack exchange,提问作者Paske34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:12:00