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

为何Playwright测试通过后仍耗时终止?百度测试为何耗时近10秒?

问题解答

测试通过后额外耗时的原因

测试括号内的时间(如2.9s)是测试逻辑本身的执行时间,而总耗时(如4.2s)包含了Playwright在测试结束后的收尾工作:

  • 浏览器上下文清理:关闭页面、销毁浏览器实例、释放进程资源,非无头模式(headless: false)下,UI窗口的关闭和进程退出会额外占用时间。
  • 测试结果处理:收集测试日志、生成基础报告、汇总结果信息,这些操作需要一定的I/O和处理时间。
  • 资源回收:Playwright会确保所有网络请求、内存资源被正确释放,避免内存泄漏,这个过程也会消耗时间。

百度测试总耗时更长的核心原因

百度页面和谷歌页面的差异导致收尾阶段耗时剧增,主要有以下几点:

  • 页面资源与后台请求:百度页面包含大量异步加载的第三方资源(如广告、推荐组件、统计脚本),部分资源会在load事件后持续请求,浏览器关闭时需要等待这些请求终止或强制断开,耗时更长。
  • 浏览器进程负载:Edge浏览器渲染百度页面时,可能启动更多子进程处理复杂的页面逻辑,销毁这些进程的时间比谷歌页面更长。
  • 无超时配置影响:配置中actionTimeout: 0(无操作超时),如果页面存在长期运行的脚本(如WebSocket连接),Playwright不会主动终止,直到浏览器强制关闭,进一步拉长了收尾时间。

优化建议

  1. 启用无头模式:将headless设为true,去掉UI渲染开销,浏览器启动和关闭速度会大幅提升。
  2. 限制上下文关闭超时:在配置的use字段中添加contextOptions: { timeout: 5000 },强制浏览器上下文在5秒内关闭,避免无限等待。
  3. 主动清理资源:在测试末尾添加await page.close(),提前触发页面关闭,减少收尾阶段的等待时间。
  4. 拦截不必要资源:用page.route拦截广告、统计等第三方请求,减少页面加载后的后台活动:
    test("example", async ({ page }) => {
      await page.route("**/*ad*", (route) => route.abort());
      await page.goto("https://www.baidu.com");
    });
    
  5. 查看详细日志:用npx playwright test --verbose运行测试,查看额外时间具体消耗在哪个阶段(如浏览器关闭、报告生成),针对性优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:05:24