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






Используйте assertVisible() / assertPresent() и assertMissing():
$browser->assertVisible("@button-create");
$browser->assertMissing("@button-create");
Большое спасибо. Сделал мой день. Yahooooooooo