Как проверить сообщения подтверждения / предупреждения с помощью capybara + безголовый хром - PullRequest
0 голосов
/ 27 ноября 2018

Недавно я переключил свои приемочные тесты с capybara-webkit на безголовый хром.В некоторых случаях мне нужно проверять предупреждающие сообщения (например, подтверждать, чтобы отменить изменения, когда пользователь покидает страницу).С помощью capybara-webkit я сделал это следующим образом

confirm_messages = page.driver.browser.confirm_messages
expect(confirm_messages.first).to include "Do you want to discard your changes?"

# or

expect(page.driver.browser.confirm_messages).to be_empty

Теперь, когда я пытаюсь получить подтверждающие сообщения с Chrome / Headless Chrome, я получаю следующую ошибку:

undefined method `confirm_messages' for #<Selenium::WebDriver::Chrome::Driver:0x007fa5478d8a08> (NoMethodError)

Как я могутестовые оповещения с капибарой и хромом без головы?

1 Ответ

0 голосов
/ 27 ноября 2018

Вам необходимо использовать параметр text методов модальной обработки Capybaras (accept_confirm / accept_alert / etc) - https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Session#accept_confirm-instance_method - который проверит сообщение, прежде чем оно примет / отклонит модальную систему

accept_confirm "Do you want to discard your changes?" do
  # whatever action triggers the modal to be shown
  click_link("Go somewhere else")
end

Технически accept_confirm также возвращает текст поля, чтобы вы могли сделать что-то вроде

msg = accept_confirm do
  # action which triggers modal to be shown
end
expect(msg).to eq "Do you want to discard your changes?"

, хотя, если вы точно знаете текст сообщения, первый пример читается лучше.Обратите внимание, что это также работало бы с capybara-webkit без необходимости использования специфичных для драйвера методов.

...