首页/开发/软件测试速查/无头模式与有头调试
自动化测试66 条

无头模式与有头调试

无头模式在 CI 上默认运行(Playwright 默认无头,Selenium 可用 --headless 参数),本地调试切有头模式观察;两种模式的字体、GPU 与时区差异需要在 CI 配置里对齐。

软件测试速查开发更新于 2026-10-13

无头模式与有头调试

无头模式在 CI 上默认运行:Playwright 默认无头,Selenium 用参数切换;本地调试切有头模式观察页面。两种环境存在字体、GPU、时区与窗口尺寸差异,需要在 CI 配置里对齐,否则会出现「本地通过、CI 失败」的幽灵问题,排查无从下手。

基本信息

默认行为Playwright 默认无头;Selenium 显式传参启用
本地调试切有头模式观察真实交互与渲染
差异来源字体、GPU 加速、时区、窗口尺寸、语言
证据留存失败保留截图、视频与 trace
对齐手段固定视口、字体与语言,锁定随机因素
并行场景无头资源占用低,适合容器并行
排查顺序先对比本地与 CI 的启动参数、字体与时区

切换方式

切换方式
npx playwright test --headed     # 本地有头调试
# Selenium:
# options.add_argument("--headless=new")
# CI 失败先看 trace、截图与视频,再定位环境差异

典型使用场景

  • CI 回归:无头模式跑全量,降低资源占用。
  • 本地调试:有头模式观察点击、滚动与渲染细节。
  • 视觉对照:截图基线在无头环境生成,保持条件一致。
  • 慢网络模拟:无头配合网络节流复现加载问题。
  • 并行执行:容器里无头并行,提高吞吐。
  • 兼容排查:无头专属失败时,比对两条路径的环境差异。
  • 容器基线:固定基础镜像与字体包,减少环境漂移。
  • 性能对比:无头启动更快、资源更低,适合大规模回归。
  • 定时任务:夜间无头跑全量回归,早上直接看简报。
无头环境字体渲染差异未固定,视觉基线会频繁抖动。
排查无头专属失败时,先在 CI 容器里跑有头模式对比,再定位环境差异。
无头不等于没有界面问题:渲染差异可能掩盖真实缺陷,视觉验证条件要一致。
在 CI 里跑有头模式需要虚拟显示服务(如 xvfb)支撑。

易错点

  • 本地有头通过、CI 无头失败,却未保留截图与日志无从排查。
  • 无头环境字体渲染差异未固定,视觉基线频繁抖动。
  • 调试完全依赖无头模式,交互问题观察不到。
  • CI 与本地视口、时区不同步,随机失败成常态。
  • 忽略滚动加载在无头下的差异,选择器命中行为不一致。
  • 截图与快照在两种模式间混用基线,对比结果无效。

数据来源与参考

  • Playwright 官方文档:Browsers 与 headless 说明(playwright.dev)
  • Selenium 官方文档(Headless 模式说明,selenium.dev)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌