为什么我不能在 Laravel Dusk 中使用 body class 选择器?
Why can I not use a body class selector with Laravel Dusk?
我正在使用 Laravel 5.5 和 Dusk 2.0。我有以下 html.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body class="my-body-class" id="my-body-div">
<div class="my-content-class" id="my-content-div">
Content goes here.
</div>
</body>
</html>
这是我的 Dusk 测试。
public function testBasicExample()
{
$this->browse(function (Browser $browser) {
$browser->visit('/test/admin-fixed-layout');
$this->assertNotNull($browser->element('.my-content-class'));
$this->assertNotNull($browser->element('#my-content-div'));
// $this->assertNotNull($browser->element('.my-body-class'));
$this->assertNotNull($browser->element('#my-body-div'));
});
}
如果我取消注释使用 body class 选择器的断言,测试将失败。为什么?
这是因为默认前缀设置为 body
:
public function __construct($driver, $prefix = 'body')
{
$this->driver = $driver;
$this->prefix = trim($prefix);
}
在 Laravel\Dusk\ElementResolver
class.
如果你真的需要改变这个(但可能没有意义),你可以将下面的方法添加到Tests/DuskTestCase
class:
protected function newBrowser($driver)
{
return new \Laravel\Dusk\Browser($driver, new \Laravel\Dusk\ElementResolver($driver, ''));
}
这将覆盖默认浏览器并传递空前缀而不是默认 body
前缀
我正在使用 Laravel 5.5 和 Dusk 2.0。我有以下 html.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body class="my-body-class" id="my-body-div">
<div class="my-content-class" id="my-content-div">
Content goes here.
</div>
</body>
</html>
这是我的 Dusk 测试。
public function testBasicExample()
{
$this->browse(function (Browser $browser) {
$browser->visit('/test/admin-fixed-layout');
$this->assertNotNull($browser->element('.my-content-class'));
$this->assertNotNull($browser->element('#my-content-div'));
// $this->assertNotNull($browser->element('.my-body-class'));
$this->assertNotNull($browser->element('#my-body-div'));
});
}
如果我取消注释使用 body class 选择器的断言,测试将失败。为什么?
这是因为默认前缀设置为 body
:
public function __construct($driver, $prefix = 'body')
{
$this->driver = $driver;
$this->prefix = trim($prefix);
}
在 Laravel\Dusk\ElementResolver
class.
如果你真的需要改变这个(但可能没有意义),你可以将下面的方法添加到Tests/DuskTestCase
class:
protected function newBrowser($driver)
{
return new \Laravel\Dusk\Browser($driver, new \Laravel\Dusk\ElementResolver($driver, ''));
}
这将覆盖默认浏览器并传递空前缀而不是默认 body
前缀