Laravel Dusk安装失败主因是版本不匹配、ChromeDriver未对齐或环境配置缺失:Laravel 9用^7.0,10.0–10.28用^7.5,10.29+可用v8;需先设APP_URL,再运行dusk:install;ChromeDriver主版本须与Chrome严格一致,并在CI中启用--headless等参数。

装不上不是因为你漏了步骤,而是版本不匹配、环境没对齐、ChromeDriver 没落位——三处任一出错,php artisan dusk 就会直接报 WebDriverException 或 session not created。
确认 Laravel 和 Dusk 版本是否兼容
Composer 默认拉最新版 laravel/dusk(v8.x),但它只认 Laravel 10.29+ 和 PHP 8.1+。旧项目硬装会卡在 illuminate/support 冲突或 php-webdriver/webdriver 解析失败。
-
php artisan --version查清你用的是哪个 Laravel 主版本 - Laravel 9 → 必须用
composer require laravel/dusk:^7.0 - Laravel 10.0–10.28 → 用
composer require laravel/dusk:^7.5 - Laravel 10.29+ → 可以直接
composer require laravel/dusk
运行 dusk:install 前必须设好 APP_URL
php artisan dusk:install 不只是建目录和放示例测试,它还会检查 APP_URL 是否可访问。如果 .env 里还是默认的 http://localhost,Dusk 启动后访问不了你的应用,后续所有测试都会超时或跳转失败。
- 把
APP_URL改成你实际开发时浏览器访问的地址,比如http://localhost:8000或http://myapp.test - 用 Laravel Sail?得额外看 Sail 文档里的
DUSK_DRIVER_URL和APP_URL配置项 - 用 Laradock?要在
docker-compose.yml的workspaceenvironment 里显式加APP_URL
ChromeDriver 版本必须和 Chrome 主版本一致
Dusk 自带的 dusk:chrome-driver 命令不是万能的——它只管下载二进制,不管系统里 Chrome 装在哪、是不是最新版。常见错误是 cannot find Chrome binary 或 This version of ChromeDriver only supports Chrome version XX。
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
- 查 Chrome 路径:
which google-chrome(Linux/macOS)或where chrome.exe(Windows) - 查 Chrome 版本:
google-chrome --version,取主版本号(如124.0.6367.207→ 124) - 手动下载对应
chromedriver_v124.0.6367.207,解压后丢进tests/Browser/Drivers/(需自己建) - 更稳妥的做法:在
tests/DuskTestCase.php的prepare()方法里加一行ChromeDriver::install();(v7.5+ 支持)
CI 环境或容器里跑 Dusk 必须加 --headless 和 --no-sandbox
本地能跑不代表 CI 或 Docker 里也能跑。缺少图形界面、权限限制、沙箱策略都会让 Chrome 启动失败。
- 在
tests/DuskTestCase.php的driver()方法里,给ChromeOptions显式加参数: -
'--headless'、'--no-sandbox'、'--disable-gpu'、'--window-size=1920,1080' - 确保
vendor/laravel/dusk/bin/chromedriver-linux(或对应平台文件)有执行权限:chmod +x vendor/laravel/dusk/bin/chromedriver-linux - 用 Laradock?还要在
workspace容器里装libglib2.0-0 libnss3 libgconf-2-4 libfontconfig1等依赖
最常被忽略的一点:Dusk 测试失败时不会自动告诉你 Chrome 启动在哪一步卡住,得先看日志里是 Chrome binary not found 还是 session not created,再决定该查路径、版本,还是权限。别一上来就重装整个包。










