[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的方法可以参考 官方文件


<<:  [面试][後端]设计 API 时会考虑哪些点?

>>:  【Day20】[资料结构]-图Graph-实作

# Day#18 设定、上传照片与default值

前言 昨天只写了注册与登入的功能,好像完全没有提到这到底是个什麽样的app... 那天,没有朋友的我...

[Day 9] 漂亮的输入框 TextField 文本框

Day 8 从Day8 fork一份开始 昨天提到了登入 才发现 文本框没有介绍到 可用於各项输入 ...

[Day15] Tableau 轻松学 - 地图工作表

前言 我们已经学会使用长条图来做资料探索。然而,Tableau Desktop 除了长条图外,还有其...

[Day20]ISO 27001 附录 A.8 资产管理

好的!【足以维护资讯系统的人才】已经到位啦! 所以就就可以针对资讯资产来做管理! A.8 资产管理 ...

Day 14 - Functor

Introduction 在先前我们提到了 compose,并且将许多单一功能的纯函式,透过 com...