Laravel Dusk是官方浏览器测试工具,基于ChromeDriver,支持无头浏览器操作。安装通过composer require --dev laravel/dusk,运行php artisan dusk:install初始化。使用php artisan dusk:make创建测试类,如LoginTest,可在testUserCanLogin方法中用visit、type、press、assertPathIs模拟登录流程。Dusk提供clickLink、select、check、waitFor等方法交互,支持JavaScript执行与截图调试。默认无头运行,可修改DuskTestCase.php移除--headless参数查看界面,确保ChromeDriver与Chrome版本匹配,端口冲突时可用--server-port指定。

Laravel Dusk 是 Laravel 官方提供的浏览器自动化测试工具,基于 ChromeDriver 和 Facebook WebDriver 构建,无需安装 JDK 或 Selenium,使用起来非常方便。它让你可以用接近真实用户操作的方式测试前端功能,比如登录、表单提交、点击按钮等。
安装与配置 Dusk
在 Laravel 项目根目录下运行以下命令安装 Dusk:
composer require --dev laravel/dusk
安装完成后,注册 Dusk 的服务提供者(Laravel 8+ 通常会自动注册)。然后运行安装命令:
php artisan dusk:install
这个命令会生成 tests/Browser 目录,并创建一个示例测试文件。同时会在该目录下生成 Chromedriver 可执行文件(根据系统自动匹配)。
创建第一个浏览器测试
使用 Artisan 命令创建测试类:
php artisan dusk:make LoginTest
这会在 tests/Browser 下生成 LoginTest.php。编辑该文件:
示例:测试用户登录功能
网站建设响应式网站模板源码是以cmseasy为核心进行开发的cmseasy模板,软件可免费使用,模板附带测试数据!网站建设响应式网站模板源码特点:整体采用浅色宽屏设计,简洁大气,电脑手机自适应布局,大方美观,功能齐全,值得推荐的一款模板,每个页面精心设计,美观大方,兼容各大浏览器;所有代码经过SEO优化,使网站更利于搜索引擎排名,是您做网站建设响应式网站模板的明确选择。无论是在电脑、平板、手机上都
public function testUserCanLogin()
{
$this->browse(function ($browser) {
$browser->visit('/login')
->type('email', 'test@example.com')
->type('password', 'password')
->press('Login')
->assertPathIs('/dashboard');
});
}
说明:
- visit():访问指定页面
- type():在输入框中填入内容(参数为字段名或 CSS 选择器)
- press():点击按钮(支持文本或选择器)
- assertPathIs():断言当前 URL 路径
常用操作与断言
Dusk 提供丰富的交互和断言方法:
-
点击链接:
$browser->clickLink('Register') -
选择下拉框:
$browser->select('role', 'admin') -
勾选复选框:
$browser->check('terms') -
等待元素出现:
$browser->waitFor('.success-message') -
执行 JavaScript:
$browser->script('return document.title;') -
截图:
$browser->screenshot('failed_login')(调试时很有用) -
断言可见性:
$browser->assertVisible('.alert-danger')
运行测试
直接运行:
php artisan dusk
默认使用 Chrome 浏览器无头模式运行。如果想查看实际操作过程(调试时),可以启动有头模式:
修改 tests/DuskTestCase.php 中的 driver() 方法:
protected function driver()
{
return RemoteWebDriver::create(
'http://localhost:9515',
DesiredCapabilities::chrome()->setCapability(
'goog:chromeOptions',
['args' => ['--disable-gpu', '--no-sandbox']]
// 移除 '--headless' 即可显示浏览器
)
);
}
确保 Chromedriver 版本与 Chrome 浏览器兼容。如遇端口冲突,可指定其他端口:
php artisan dusk --server-port=9516基本上就这些。Dusk 让 Laravel 应用的端到端测试变得简单直观,特别适合验证关键用户流程。









