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

GitLab CI/CD流水线运行Selenium Chrome无头测试启动失败报错500

Selenium+WebDriver Manager在GitLab CI/CD中Chrome启动崩溃问题

问题背景

近期将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启动失败:崩溃


解决方法

  1. 补充无头模式窗口大小参数
    无头模式无默认窗口尺寸,需手动指定,避免因环境无显示设备导致启动失败。在ChromeOptions中添加:

    options.addArguments("--window-size=1920,1080");
    
  2. 确保Runner环境安装对应版本Chrome
    WebDriver Manager会自动匹配驱动版本,但需Runner环境已安装Chrome。Ubuntu环境可在CI脚本中添加安装命令:

    apt-get update && apt-get install -y chromium-browser
    
  3. 增强兼容性参数
    在现有参数基础上补充以下配置,减少环境兼容性问题:

    options.addArguments("--disable-gpu"); // 无头模式禁用GPU
    options.addArguments("--single-process"); // 强制单进程运行,避免资源冲突
    
  4. 锁定WebDriver Manager与Selenium兼容版本
    版本不匹配可能导致驱动与浏览器适配问题,Maven项目可在pom.xml中锁定版本:

    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>5.6.0</version> <!-- 适配Selenium 4.x -->
    </dependency>
    
  5. 调整Runner资源配置
    若Runner内存不足,Chrome易启动崩溃。可在Runner配置中增加内存分配,或添加内存优化参数:

    options.addArguments("--disable-application-cache");
    options.addArguments("--disable-offline-load-stale-cache");
    

内容的提问来源于stack exchange,提问作者Amad Bin Mumtaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:25:31