Laravel Dusk 测试的全局 CSS 选择器
Global CSS selectors for Laravel Dusk tests
我正在使用 Laravel Dusk
为我的项目编写 Selenium
测试。
我的 tests\Browser
文件夹中有一个名为 PrivilegeLevelsTest
的 class。
我在 class 中使用了很多复杂的选择器,例如 ->type('.gen-search-table[data-uri="table/userSearch"] input', $this->lettersToSearch)
我在文档中看到这些选择器可以在Page
class处声明,在siteElements
方法中,但是这些声明只能从Pages
文件夹。由于我不想在那里进行测试,我想问是否有其他方法可以从外部查看这些声明?
我的 Page.php
看起来像这样:
<?php
namespace Tests\Browser\Pages;
use Laravel\Dusk\Page as BasePage;
abstract class Page extends BasePage
{
/**
* Get the global element shortcuts for the site.
*
* @return array
*/
public static function siteElements()
{
return [
'@element' => '#selector',
'@search' => '.gen-search-table[data-uri="table/userSearch"] input'
];
}
}
我想像这样使用 @search
:
public function testAdminCanListUsers()
{
$this->browse(function(Browser $browser) {
$browser->loginAs($this->user)
->visit('/profile')
->pause(3000)
->type('@search', $this->lettersToSearch)
->pause(3000)
->press('Show All')
->assertSee($this->userToSearch->user_name);
});
}
您必须创建自己的 Page
class:
class MyPage extends Page {
}
然后与on()
一起使用:
$browser->loginAs($this->user)
->visit('/profile')
->pause(3000)
->on(new MyPage)
->type('@search', $this->lettersToSearch)
->pause(3000)
->press('Show All')
->assertSee($this->userToSearch->user_name);
我正在使用 Laravel Dusk
为我的项目编写 Selenium
测试。
我的 tests\Browser
文件夹中有一个名为 PrivilegeLevelsTest
的 class。
我在 class 中使用了很多复杂的选择器,例如 ->type('.gen-search-table[data-uri="table/userSearch"] input', $this->lettersToSearch)
我在文档中看到这些选择器可以在Page
class处声明,在siteElements
方法中,但是这些声明只能从Pages
文件夹。由于我不想在那里进行测试,我想问是否有其他方法可以从外部查看这些声明?
我的 Page.php
看起来像这样:
<?php
namespace Tests\Browser\Pages;
use Laravel\Dusk\Page as BasePage;
abstract class Page extends BasePage
{
/**
* Get the global element shortcuts for the site.
*
* @return array
*/
public static function siteElements()
{
return [
'@element' => '#selector',
'@search' => '.gen-search-table[data-uri="table/userSearch"] input'
];
}
}
我想像这样使用 @search
:
public function testAdminCanListUsers()
{
$this->browse(function(Browser $browser) {
$browser->loginAs($this->user)
->visit('/profile')
->pause(3000)
->type('@search', $this->lettersToSearch)
->pause(3000)
->press('Show All')
->assertSee($this->userToSearch->user_name);
});
}
您必须创建自己的 Page
class:
class MyPage extends Page {
}
然后与on()
一起使用:
$browser->loginAs($this->user)
->visit('/profile')
->pause(3000)
->on(new MyPage)
->type('@search', $this->lettersToSearch)
->pause(3000)
->press('Show All')
->assertSee($this->userToSearch->user_name);