Laravel Dusk测试的全局CSS选择器

时间:2018-07-23 08:52:58

标签: laravel selenium laravel-dusk

我正在使用Laravel Dusk为我的项目编写Selenium测试。 我的PrivilegeLevelsTest文件夹中有一个名为tests\Browser的类。

我在该课程中使用了许多复杂的选择器,例如->type('.gen-search-table[data-uri="table/userSearch"] input', $this->lettersToSearch)

我已经在文档中看到,可以在Page类的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);
        });
     }

1 个答案:

答案 0 :(得分:1)

您必须创建自己的Page类:

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);
相关问题