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

GitHub Actions运行Selenium报错Chrome异常退出无法启动会话

问题修复方案

你遇到的Chrome启动异常和Chrome安装、版本匹配无关,是代码逻辑错误和依赖配置错误导致的,具体问题和修复方式如下:

核心问题1:WebDriver重复初始化,CI必需的启动参数未生效

你的测试代码中存在变量覆盖问题:

  1. 你先创建了带--no-sandbox/--headless/--disable-dev-shm-usage等CI环境必需参数的ChromeOptions,初始化了一次driver
  2. 紧接着你又在方法内重新声明了一个局部WebDriver变量,用无参构造方法new ChromeDriver()创建了第二个driver实例,后续所有测试操作都是用的这个没有加任何启动参数的实例
    本地环境有图形桌面,不带无头参数可以正常启动Chrome,所以本地运行无异常;但GitHub Actions的Ubuntu运行器是无GUI的纯命令行环境,不带无头、关闭沙箱等参数启动Chrome必然直接异常退出,就是你看到的报错。

核心问题2:Selenium依赖版本冲突

你的Maven配置中selenium-chrome-driver版本为4.3.0,selenium-java版本为4.2.1,核心依赖版本不匹配会导致会话初始化时出现不可预期的兼容问题。另外selenium-java本身已经包含了selenium-chrome-driver等所有子模块依赖,不需要单独引入chrome-driver包,额外引入反而容易出现版本不一致的问题。

可选优化:无需自行编写脚本安装Chrome

GitHub Actions官方提供的ubuntu-latest运行器默认已经预装了稳定版Google Chrome和所有系统依赖,你自定义脚本安装Chrome反而可能出现版本覆盖、依赖缺失的问题,直接删除该步骤即可,WebDriverManager会自动识别系统内的Chrome版本拉取匹配的ChromeDriver。

修复后代码参考

测试用例核心代码

@org.junit.Test
public void test() throws InterruptedException {
    WebDriverManager.chromedriver().setup();

    ChromeOptions opt = new ChromeOptions();
    opt.addArguments("--no-sandbox");
    opt.addArguments("--disable-dev-shm-usage");
    opt.addArguments("--headless=new"); // Chrome100+版本推荐使用新无头模式,兼容性更好
    opt.addArguments("--disable-gpu");
    // 仅初始化一次driver,删除重复的无参初始化代码
    driver = new ChromeDriver(opt);

    driver.get("https://www.amazon.com.tr/");
    driver.findElement(By.xpath("/html/body/div[1]/header/div/div[4]/div[2]/div/div/a[5]")).click();
    // 测试结束关闭进程,避免CI环境残留僵尸进程
    driver.quit();
}

Maven依赖配置

<!-- 统一Selenium版本为4.3.0,移除单独引入的selenium-chrome-driver依赖 -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.3.0</version>
</dependency>
<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.2.1</version>
    <scope>test</scope>
</dependency>

简化后的ci.yml工作流配置

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'adopt'
      # 删除自定义安装Chrome的步骤,使用运行器预装的Chrome即可
      - name: Test with Maven
        run: mvn clean test 

内容的提问来源于stack exchange,提问作者Basak Balci

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:06:20