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
相关产品推荐
相关产品推荐

