最近在进行一个 Laravel 项目的开发时,我发现自动化测试的重要性日益凸显。特别是涉及到前端交互的测试,Laravel Dusk 提供了强大的能力。然而,Dusk 在实际使用中有一个常见痛点:ChromeDriver 的版本管理。
我的困境是这样的:Dusk 依赖于 ChromeDriver 来驱动真实的 Chrome 或 Chromium 浏览器执行测试。但 Chrome 浏览器更新频率很快,每次更新都可能导致现有的 ChromeDriver 无法正常工作,报错提示版本不匹配。这意味着我需要:
vendor/laravel/dusk/bin
这个过程在本地开发时就已经很繁琐了,更不用说在团队协作和 CI/CD 环境中。每次环境部署或浏览器更新,都可能需要重复这些步骤,极大地降低了开发效率和测试的可靠性。有时候,Dusk 测试失败,排查半天发现竟然是 ChromeDriver 版本的问题,而不是代码本身,这简直让人抓狂!
staudenmeir/dusk-updater
就在我被这个问题折磨得不轻时,我发现了
staudenmeir/dusk-updater
安装过程非常简单:
因为它只在开发和测试环境中使用,所以我们将其作为开发依赖安装:
<pre class="brush:php;toolbar:false;">composer require --dev staudenmeir/dusk-updater:"^1.1"
如果你使用的是 Laravel 5.4 版本,还需要在
AppServiceProvider::register()
<pre class="brush:php;toolbar:false;">// app/Providers/AppServiceProvider.php if ($this->app->environment('local', 'testing')) { $this->app->register(\Staudenmeir\DuskUpdater\DuskServiceProvider::class); }
对于更高版本的 Laravel,通常会自动发现并注册。
使用起来更是方便快捷:
安装完成后,你就可以使用 Artisan 命令来管理 ChromeDriver 了。
下载最新的稳定版 ChromeDriver: 这是最基本的用法,它会下载与最新稳定版 Chrome 兼容的 ChromeDriver。
<pre class="brush:php;toolbar:false;">php artisan dusk:update
自动检测已安装的 Chrome/Chromium 版本并更新: 这是我最常用的功能,也是这个包的核心优势所在。它会智能地检测你系统上安装的 Chrome/Chromium 浏览器版本,并下载与之完全匹配的 ChromeDriver。
<pre class="brush:php;toolbar:false;">php artisan dusk:update --detect登录后复制登录后复制登录后复制
这样一来,无论你的浏览器何时更新,只需运行这个命令,就能保证 ChromeDriver 始终与浏览器版本同步。
手动指定 Chrome/Chromium 的主版本号: 如果你想针对某个特定版本的 Chrome 浏览器进行测试,可以手动指定其主版本号。
<pre class="brush:php;toolbar:false;">php artisan dusk:update 127
手动指定精确的 ChromeDriver 版本: 在某些特定情况下,你可能需要使用某个精确版本的 ChromeDriver。
<pre class="brush:php;toolbar:false;">php artisan dusk:update 127.0.6533.119
实际应用效果和优势:
自从我引入
staudenmeir/dusk-updater
composer install
总结:
对于任何使用 Laravel Dusk 进行自动化测试的开发者来说,
staudenmeir/dusk-updater
以上就是如何解决LaravelDuskChromeDriver版本不匹配问题,staudenmeir/dusk-updater助你轻松搞定自动化测试环境的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号