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

GitLab CI/CD流水线Selenium Chrome驱动启动异常退出问题求助

问题核心原因

  • Docker executor默认无图形渲染环境,原生Chrome启动依赖GUI组件,直接运行就会触发崩溃报错
  • 之前使用的headless模式配置不全才会导致测试失败,remote模式是服务地址/配置错误无法连接

修复方案

方案一:补全Headless模式参数(最省事,无需修改CI runner配置)

不要仅开启headless,需要同时关闭沙箱、共享内存限制适配Docker无GUI环境,代码修改如下:

import chromedriver_autoinstaller
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

driver = chromedriver_autoinstaller.install()
options = Options()
# 核心适配Docker无GUI环境的参数
options.add_argument("--headless=new") # 采用Chrome新版headless模式,兼容性更强
options.add_argument("--no-sandbox") # 关闭沙箱,Docker无root权限环境下必须配置
options.add_argument("--disable-dev-shm-usage") # 禁用/dev/shm使用,解决Docker共享内存不足导致的崩溃问题
options.add_argument("--disable-gpu") # 禁用GPU加速,无图形环境下无需开启
# 保留原有下载配置
prefs = {'profile.default_content_setting_values.automatic_downloads': 1}
options.add_experimental_option("prefs", prefs)
# 若使用的joyzoursky/python-chromedriver镜像已内置chromedriver和Chrome,可去掉autoinstaller直接指定路径避免版本冲突
# options.binary_location = '/usr/bin/google-chrome'
# driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')
driver = webdriver.Chrome(options=options)

如果仍有测试失败,基本是页面元素加载超时问题,补充隐式等待或显式等待即可,headless模式的页面渲染逻辑和普通模式完全一致,不存在功能差异。

方案二:修复Remote Driver配置

之前remote模式报错是因为未配置服务依赖,需要先在.gitlab-ci.yml中加入selenium standalone chrome服务,再补充ChromeOptions适配参数:

  1. 修改.gitlab-ci.yml配置,添加服务声明:
your-test-job:
  image: python:3.8
  services:
    - name: selenium/standalone-chrome:latest
      alias: selenium-standalone-chrome # 注意别名不要使用双下划线,之前填写的selenium__standalone-chrome属于地址错误
  variables:
    SELENIUM_REMOTE_URL: http://selenium-standalone-chrome:4444/wd/hub
  script:
    - pip install selenium
    - python your_test_script.py
  1. 修改Remote Driver代码:
elif self.browser == 'remote':
    options = webdriver.ChromeOptions()
    # 同样添加适配参数
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--headless=new")
    driver = webdriver.Remote(options=options, command_executor='http://selenium-standalone-chrome:4444/wd/hub')

方案三:自定义GitLab Runner(仅当上述两个方案无法满足需求时使用)

如果必须使用GUI模式运行测试,可以自行搭建带图形环境的GitLab runner,采用shell executor部署在安装了桌面环境、Chrome的物理机/虚拟机上,无需Docker环境可直接运行本地原始代码,但维护成本更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:08