Я занимаюсь разработкой веб-приложения с использованием фреймворка Laravel. Я запускаю тестирование модуля 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-тегом. Возможно ли это без упаковки другого тега? Как?