症状
启动 Selenium 会话时抛出 WebDriverException,消息可能是 unknown error: Chrome failed to start 或 DevToolsActivePort file does not exist。它在容器与 CI 中最常见,因为浏览器没有显示、共享内存不足,或版本与已安装驱动不匹配。
诊断
比对浏览器与驱动版本;在 Docker 中以 –headless=new 与 –no-sandbox 试启;必要时增大 –shm-size。
google-chrome --version && chromedriver --version
根因
浏览器启动失败,原因是驱动与浏览器不匹配、容器缺少显示或共享内存,或沙箱机制阻止了启动,而不是测试代码的问题。
修复
让驱动与浏览器版本匹配,最好交给 Selenium Manager 自动获取;以无头模式并配合适当标志运行;为容器提供足够的共享内存。每会话复用一个驱动并干净退出。
验证
启动浏览器确认能加载页面,再跑测试套件确认不再抛 WebDriverException。相同容器设置下稳定通过才是真正的证明。
常见陷阱
在无头容器中长期禁用沙箱会降低隔离性;应尽量以最小权限与合适资源运行。