Rspe c, капибара, selenium_chrome_headless. Ждите ответа после отправки удаленной формы - PullRequest
1 голос
/ 08 февраля 2020

Используются Rails 6, Rspe c rspec-rails (3.9.0), Capybara capybara (3.31.0), selenium_chrome_headless

Я пытаюсь отправить ajax форму с remote: true. Как я могу ждать ответа?

Сейчас работает sleep 0.2, но мне действительно не нравится такой подход.

Я нашел другой способ:

  Timeout.timeout(Capybara.default_wait_time) do
    loop do
      active = page.evaluate_script('jQuery.active')
      break if active == 0
    end
  end

но это не работает.

Мой рекодр должен исчезнуть после запроса:

expect(page).to_not have_content('User name')

Есть предложения? Спасибо за продвижение

1 Ответ

1 голос
/ 09 февраля 2020

Вы должны установить ожидание любых видимых изменений на странице после выполнения запроса. Если это означает, что текст «Имя пользователя» исчезает со страницы после завершения запроса, тогда ваше ожидание

expect(page).not_to have_content('User name')

или

expect(page).to have_no_content('User name')

будет ждать до этого содержимого (так же, как have_text ) больше не отображается на странице (до Capybara.default_wait_time секунд), что означает, что запрос завершен. Если этот текст находится на странице несколько раз и удаляется только из одного места, вы можете использовать опцию подсчета в have_content или указать, что у вас нет ожидаемого содержимого в указанном разделе c страницы, где текст удаляется. с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...