Laravel Dusk Test утверждает, что элемент селектора не существует

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
2
0
1 612
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте assertVisible() / assertPresent() и assertMissing():

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

Большое спасибо. Сделал мой день. Yahooooooooo

Wai Yan Hein 08.11.2018 12:22

Другие вопросы по теме