Laravel Dusk中Chrome Driver在GitHub Actions环境运行失败,求解决方案
解决Laravel Dusk在GitHub Actions中测试失败的问题
问题根源
Chrome 116版本发布后,Google将ChromeDriver的下载源从chromedriver.storage.googleapis.com迁移到了Chrome for Testing的新仓库,旧版Laravel Dusk仍在使用旧源,导致无法找到116+版本的ChromeDriver;同时CI环境中的Chrome会自动更新到最新版,强制安装旧版ChromeDriver会出现版本不匹配的报错。
修复方案
方案1:升级Laravel Dusk到适配新源的版本
新版Dusk已经适配了Chrome for Testing的下载地址,直接升级即可解决:
- 更新Dusk依赖:
(注:版本号需与你的Laravel版本对应,Laravel 10对应Dusk 7.x,Laravel 9对应Dusk 6.x)composer require --dev laravel/dusk:^7.0 - 重新发布Dusk配置:
php artisan dusk:install - 继续使用原命令安装对应版本的ChromeDriver:
php artisan dusk:chrome-driver `/opt/google/chrome/chrome --version | cut -d " " -f3 | cut -d "." -f1`
方案2:手动下载匹配版本的ChromeDriver(不升级Dusk)
如果暂时无法升级Dusk,可直接从新仓库下载对应Chrome版本的ChromeDriver:
- 在GitHub Actions步骤中获取当前Chrome的完整版本号:
CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+\.\d+') - 下载并替换Dusk使用的ChromeDriver:
curl -LO "https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/${CHROME_VERSION}/linux64/chromedriver-linux64.zip" unzip chromedriver-linux64.zip mv chromedriver-linux64/chromedriver ./vendor/laravel/dusk/bin/chromedriver-linux chmod +x ./vendor/laravel/dusk/bin/chromedriver-linux
方案3:锁定CI环境中的Chrome版本
避免Chrome自动更新导致版本不匹配,在GitHub Actions中指定Chrome版本:
- name: 安装指定版本Chrome uses: actions/setup-chrome@v1 with: chrome-version: '116.0.5845.96' # 替换为稳定的Chrome版本号
之后再安装对应版本的ChromeDriver(可使用方案1的命令或方案2的手动方法)。
内容的提问来源于stack exchange,提问作者Hashim Aziz
相关产品推荐
相关产品推荐

