iT邦幫忙

2021 iThome 鐵人賽

DAY 30
1
Modern Web

當拉拉肉遇到單元測試,是否能夠擦出命運的火花?系列 第 31

[Day 30] 使用ChromeDriver來做單元測試(三)

同時開啟多個瀏覽器

有時候可能需要多個瀏覽器來進行測試,
譬如說用多個瀏覽器來測試WebSocket的聊天室,
(這裡沒有實例,只有語法)

$this->browse(function ($first, $second) {
    $first->loginAs(User::find(1))
          ->visit('/home')
          ->waitForText('Message');

    $second->loginAs(User::find(2))
           ->visit('/home')
           ->waitForText('Message')
           ->type('message', 'Hey Taylor')
           ->press('Send');

    $first->waitForText('Hey Taylor')
          ->assertSee('Jeffrey Way');
});

語法說明

visit方法可以導引到一個指定URL的網頁

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

visitRoute方法可以導引到一個指定路由命名

$browser->visitRoute('login');

backforward方法可以導引到前一頁和後一頁

$browser->back();

$browser->forward();

refresh方法可以刷新頁面

$browser->refresh();

調整瀏覽器的視窗

使用resize方法可以調整瀏覽器視窗的大小

$browser->resize(1920, 1080);

使用maximize方法可以最大化瀏覽器視窗

$browser->maximize();

使用fitContent方法可以調整瀏覽器視窗的大小,
讓它可以根據內容自動調整大小

$browser->fitContent();

可以使用move方法來將瀏覽器視窗移到螢幕上的不同位置

$browser->move($x = 100, $y = 100);

身分驗證

如果我們遇到需要身分認證的頁面,
我們可以使用dusk的loginAs方法來避免每次測試都要登入

use App\Models\User;

$this->browse(function ($browser) {
    $browser->loginAs(User::find(1))
          ->visit('/home');
});

更多關於dusk的方法可以參考 官方文件


上一篇
[Day 29] 使用ChromeDriver來做單元測試(二)
系列文
當拉拉肉遇到單元測試,是否能夠擦出命運的火花?31

尚未有邦友留言

立即登入留言