GitLab流水线运行Flutter集成测试时如何启动ChromeDriver
解决GitLab流水线中ChromeDriver启动报错问题
错误原因分析
- 解压路径不匹配:你在
before_script里创建了/chromedriver目录,但执行unzip /chromedriver/chromedriver* -d chromedriver时,-d chromedriver是相对路径,会把文件解压到当前工作目录($APP_DIR)下的chromedriver文件夹,而非你创建的/chromedriver目录。 - 未将ChromeDriver加入系统PATH:即使路径正确,直接执行
chromedriver命令会因为它不在系统默认PATH中而找不到,需要指定绝对路径或把路径加入PATH。
修正后的.gitlab-ci.yml配置
1. 修正ChromeDriver安装步骤(before_script部分)
把解压目标改为绝对路径,同时将ChromeDriver所在目录加入系统PATH:
webapp:test: extends: .webapp:test stage: test allow_failure: true before_script: # Chrome and ChromeDriver dependencies - cd $APP_DIR - apt-get install -y wget unzip - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list # Update the package list - apt-get update -y # Download and Install chrome - wget --no-verbose -O /tmp/chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && apt install -y /tmp/chrome.deb && rm /tmp/chrome.deb # Download and install Chromedriver - mkdir -p /chromedriver - wget -q --continue -P /chromedriver "https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6099.109/linux64/chromedriver-linux64.zip" # 切换到目标目录解压,避免路径嵌套 - cd /chromedriver - unzip chromedriver-linux64.zip # 将ChromeDriver所在目录加入系统PATH - export PATH=$PATH:/chromedriver/chromedriver-linux64
2. 修正启动ChromeDriver的脚本部分
因为已将路径加入PATH,直接后台启动即可(避免阻塞后续测试):
# Code to start chromedriver .webapp:test: &webapp_test image: $CI_REGISTRY_IMAGE/flutter:latest script: - apt-get update && apt-get install -y jq - cd $APP_DIR # 后台启动ChromeDriver,避免阻塞流水线 - chromedriver --port=4444 & # 等待ChromeDriver完全启动 - sleep 5 # 执行你的Flutter集成测试命令,示例: - flutter test integration_test/
额外注意事项
- 必须给
chromedriver命令加&后台运行,否则流水线会卡在启动步骤,无法执行后续测试。 - 添加
sleep 5是为了给ChromeDriver足够的初始化时间,避免测试启动时连接失败。 - 始终保持Chrome和ChromeDriver版本匹配(当前使用的120版本是匹配的,后续更新时需同步版本号)。
内容的提问来源于stack exchange,提问作者dogowar
相关产品推荐
相关产品推荐

