Laravel Dusk 测试断言选择器的元素不存在
Laravel Dusk Test assert the element of selector does not exist
我正在使用 Laravel 框架开发 Web 应用程序。我正在对我的应用程序进行 运行 Dus/Browser 单元测试。但是现在我在断言所选元素是否存在时遇到问题。
我有包含此代码片段的视图文件。
@if(auth()->user()->role == 1)
<a dusk="button-create" href="/create">
Create
</a>
@endif
我正在像这样测试 Dusk 单元测试中是否存在该按钮。
$this->browse(function (Browser $browser) use ($admin) {
$browser->loginAs($admin)->visit(url);
$textContent = $browser->text("@button-create");
$this->assertNotEmpty($textContent);
});
使用上面的代码测试按钮是否存在就可以了。但是当我测试按钮是否不存在时。
$this->browse(function (Browser $browser) use ($student) {
$browser->loginAs($student)->visit(url);
$textContent = $browser->text("@button-create");
$this->assertEmpty($textContent);
});
我遇到了这个错误。
no such element: Unable to locate element: {"method":"css selector","selector":"body [dusk="button-create"]"}
我能想到的解决方案是用另一个元素包裹 html 元素并在其上设置选择器。像这样。
<span dusk="button-create">
@if(auth()->user()->role == 1)
<a href="/create">
Create
</a>
@endif
</span>
但我不想用另一个 html 标签包装它。是否可以不包装另一个标签?怎么样?
使用assertVisible()
/assertPresent()
和assertMissing()
:
$browser->assertVisible("@button-create");
$browser->assertMissing("@button-create");
我正在使用 Laravel 框架开发 Web 应用程序。我正在对我的应用程序进行 运行 Dus/Browser 单元测试。但是现在我在断言所选元素是否存在时遇到问题。
我有包含此代码片段的视图文件。
@if(auth()->user()->role == 1)
<a dusk="button-create" href="/create">
Create
</a>
@endif
我正在像这样测试 Dusk 单元测试中是否存在该按钮。
$this->browse(function (Browser $browser) use ($admin) {
$browser->loginAs($admin)->visit(url);
$textContent = $browser->text("@button-create");
$this->assertNotEmpty($textContent);
});
使用上面的代码测试按钮是否存在就可以了。但是当我测试按钮是否不存在时。
$this->browse(function (Browser $browser) use ($student) {
$browser->loginAs($student)->visit(url);
$textContent = $browser->text("@button-create");
$this->assertEmpty($textContent);
});
我遇到了这个错误。
no such element: Unable to locate element: {"method":"css selector","selector":"body [dusk="button-create"]"}
我能想到的解决方案是用另一个元素包裹 html 元素并在其上设置选择器。像这样。
<span dusk="button-create">
@if(auth()->user()->role == 1)
<a href="/create">
Create
</a>
@endif
</span>
但我不想用另一个 html 标签包装它。是否可以不包装另一个标签?怎么样?
使用assertVisible()
/assertPresent()
和assertMissing()
:
$browser->assertVisible("@button-create");
$browser->assertMissing("@button-create");