Laravel Dusk Test断言选择器的元素不存在

时间:2018-11-07 13:47:14

标签: laravel laravel-dusk browser-testing

我正在使用Laravel框架开发Web应用程序。我正在我的应用程序上运行Dus / Browser单元测试。但是现在我在断言所选元素是否存在时遇到问题。

我有包含此代码段的查看文件。

@if(auth()->user()->role == 1)
      <a dusk="button-create" href="/create">
          Create
      </a>
@endif

我正在测试像这样的黄昏单元测试中是否存在该按钮。

  $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标签包装它。是否可以不包装另一个标签?怎么样?

1 个答案:

答案 0 :(得分:1)

使用assertVisible() / assertPresent()assertMissing()

$browser->assertVisible("@button-create");
$browser->assertMissing("@button-create");