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

GitLab流水线运行Flutter集成测试时如何启动ChromeDriver

解决GitLab流水线中ChromeDriver启动报错问题

错误原因分析

  1. 解压路径不匹配:你在before_script里创建了/chromedriver目录,但执行unzip /chromedriver/chromedriver* -d chromedriver时,-d chromedriver是相对路径,会把文件解压到当前工作目录($APP_DIR)下的chromedriver文件夹,而非你创建的/chromedriver目录。
  2. 未将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:17:26