Laravel Dusk - 重用浏览器及其会话和 cookie

作者:编程家 分类: laravel 时间:2025-10-12

Laravel Dusk - 重用浏览器及其会话和 cookie

Laravel Dusk 是 Laravel 框架的一个强大的浏览器测试工具,它可以帮助开发人员编写自动化的浏览器测试。它使用了 Facebook 的 WebDriver 库,可以模拟用户在浏览器中的操作和行为。

Laravel Dusk 提供了许多便捷的方法来编写浏览器测试,其中一个重要的特性是能够重用浏览器及其会话和 cookie。这意味着在多个测试用例中可以使用同一个浏览器实例,并保持会话和 cookie 的状态不变。

重用浏览器会话

在编写浏览器测试用例时,我们可以通过在测试类的 `setUp` 方法中创建浏览器实例,并将其赋值给类的属性来重用浏览器会话。这样,在每个测试方法中都可以使用同一个浏览器实例,从而节省了每次启动新浏览器的时间。

以下是一个示例代码:

php

use Laravel\Dusk\TestCase as BaseTestCase;

use Laravel\Dusk\Browser;

use Facebook\WebDriver\Chrome\ChromeOptions;

use Facebook\WebDriver\Chrome\ChromeDriver;

class DuskTestCase extends BaseTestCase

{

protected $baseUrl = 'http://localhost';

protected function setUp(): void

{

parent::setUp();

$options = (new ChromeOptions)->addArguments([

'--disable-gpu',

'--headless',

'--no-sandbox',

]);

$this->driver = new ChromeDriver($options);

$this->browser = new Browser($this->driver);

}

// ...

}

在上面的代码中,我们在 `setUp` 方法中创建了一个 Chrome 浏览器实例,并将其赋值给了类的属性 `$this->browser`。这样,在每个测试方法中,我们都可以通过 `$this->browser` 来访问同一个浏览器实例。

重用浏览器会话和 cookie

除了重用浏览器会话外,Laravel Dusk 还提供了方法来重用浏览器的 cookie。这对于需要在多个测试方法中保持用户登录状态的测试用例非常有用。

以下是一个示例代码:

php

class ExampleTest extends DuskTestCase

{

public function testLogin()

{

$this->browser->visit('/login')

->type('email', 'test@example.com')

->type('password', 'password')

->press('Login')

->assertPathIs('/home');

}

public function testDashboard()

{

$this->browse(function (Browser $browser) {

$browser->visit('/dashboard')

->assertSee('Welcome to Dashboard');

});

}

}

在上面的代码中,`testLogin` 方法中我们使用 `$this->browser` 来登录用户,并在成功登录后断言路径是否为 `/home`。然后,在 `testDashboard` 方法中,我们使用 `$this->browse` 方法来创建一个新的浏览器实例,并访问 `/dashboard` 页面,然后断言是否显示了欢迎信息。

通过重用浏览器会话和 cookie,我们可以在多个测试方法中保持用户的登录状态,从而使测试更加灵活和高效。

Laravel Dusk 是一个强大的浏览器测试工具,它提供了许多便捷的方法来编写自动化的浏览器测试。通过重用浏览器会话和 cookie,我们可以在多个测试方法中共享浏览器实例,并保持会话和 cookie 的状态不变。这使得我们能够更好地编写和组织浏览器测试用例,提高测试效率和可维护性。

希望本文对你理解和使用 Laravel Dusk 的浏览器会话和 cookie 功能有所帮助!