GitLab CI/CD流水线运行Selenium Chrome无头测试启动失败报错500
问题背景
近期将Selenium框架从手动配置驱动升级为WebDriver Manager管理,但在GitLab Runner的CI/CD流水线运行测试时触发报错:
Could not start a new session. Response code 500. Message: unknown error: Chrome failed to start: crashed
本地及虚拟机手动运行测试正常,仅CI/CD环境出现该问题。配置文件中browser为chrome,browserMode设置为--headless。
相关代码
String browser = new PropertyReader().readProperty("browserType"); String browserMode = new PropertyReader().readProperty("browserMode"); WebDriverManager.chromedriver().setup(); if (browser.equalsIgnoreCase("chrome")) { Map<String, Object> prefs = new HashMap<String, Object>(); prefs.put("plugins.plugins_disabled", new String[]{"Chrome PDF Viewer"}); prefs.put("profile.default_content_setting_values.notifications", 2); prefs.put("download.directory_upgrade", true); prefs.put("download.prompt_for_download", false); ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("excludeSwitches", new String[] { "enable-automation" }); options.addArguments("--disable-extensions"); options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); options.addArguments(browserMode); options.addArguments("disable-infobars"); options.setExperimentalOption("prefs", prefs); options.addArguments("--ignore-certificate-errors"); options.addArguments("--remote-allow-origins=*"); driver = new ChromeDriver(options); driver.manage().window().maximize(); driverThreadLocal.set(driver); }
错误日志翻译
未知错误:Chrome启动失败:崩溃
(未知错误:DevToolsActivePort文件不存在)
(进程异常退出)
无法启动新会话。响应码500。消息:未知错误:Chrome启动失败:崩溃
解决方法
补充无头模式窗口大小参数
无头模式无默认窗口尺寸,需手动指定,避免因环境无显示设备导致启动失败。在ChromeOptions中添加:options.addArguments("--window-size=1920,1080");确保Runner环境安装对应版本Chrome
WebDriver Manager会自动匹配驱动版本,但需Runner环境已安装Chrome。Ubuntu环境可在CI脚本中添加安装命令:apt-get update && apt-get install -y chromium-browser增强兼容性参数
在现有参数基础上补充以下配置,减少环境兼容性问题:options.addArguments("--disable-gpu"); // 无头模式禁用GPU options.addArguments("--single-process"); // 强制单进程运行,避免资源冲突锁定WebDriver Manager与Selenium兼容版本
版本不匹配可能导致驱动与浏览器适配问题,Maven项目可在pom.xml中锁定版本:<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.6.0</version> <!-- 适配Selenium 4.x --> </dependency>调整Runner资源配置
若Runner内存不足,Chrome易启动崩溃。可在Runner配置中增加内存分配,或添加内存优化参数:options.addArguments("--disable-application-cache"); options.addArguments("--disable-offline-load-stale-cache");
内容的提问来源于stack exchange,提问作者Amad Bin Mumtaz

