GitHub Actions执行Selenium测试遇SessionNotCreatedException求助
解决GitHub Actions中Selenium Chrome启动失败(DevToolsActivePort不存在)的问题
核心排查与修复步骤
1. 补充关键Chrome启动参数
除你已添加的--disable-dev-shm-usage,必须加上以下两个核心参数,这是容器化环境(GitHub Actions runner)下启动Chrome的必要配置:
--no-sandbox:GitHub Actions的运行环境是容器化的,默认没有沙箱环境,禁用沙箱才能正常启动Chrome--headless=new:新版本Chrome的标准无头模式参数,旧版--headless存在兼容性问题,容易导致端口异常
另外建议指定调试端口避免冲突,完整参数示例(Java代码):
ChromeOptions options = new ChromeOptions(); options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); options.addArguments("--headless=new"); options.addArguments("--remote-debugging-port=9222"); options.addArguments("--ignore-ssl-errors=yes"); WebDriver driver = new ChromeDriver(options);
2. 强制匹配Chrome与ChromeDriver版本
版本不兼容是这类问题的高频诱因,在GitHub Actions工作流中明确指定对应版本:
steps: - name: 安装指定版本Chrome uses: browser-actions/setup-chrome@v1 with: chrome-version: '118.0.5993.70' - name: 匹配安装ChromeDriver uses: webdriverio/action-setup-chromedriver@v1 with: version: '118.0.5993.70' - run: mvn test
3. 更新Selenium依赖到稳定版本
确保Selenium版本支持当前Chrome版本,建议使用最新稳定版:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.15.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>4.15.0</version> </dependency>
4. 校验环境状态
在工作流中添加检查步骤,确认Chrome和ChromeDriver是否正常安装:
- name: 检查Chrome版本 run: google-chrome --version - name: 检查ChromeDriver版本 run: chromedriver --version
5. 增加资源分配(可选)
GitHub Actions runner默认资源有限,可通过MAVEN_OPTS调整JVM内存:
jobs: build: runs-on: ubuntu-latest env: MAVEN_OPTS: "-Xmx2048m" steps: - uses: actions/checkout@v4 # 其他步骤...
总结
优先确认--no-sandbox和--headless=new参数是否添加,再核对Chrome、ChromeDriver、Selenium三者版本的兼容性,这两个点解决了绝大多数此类问题。如果仍未修复,可在工作流中打印Chrome启动的完整日志,进一步定位具体异常。
内容的提问来源于stack exchange,提问作者Adii-knolder
相关产品推荐
相关产品推荐

