Rails и Selenium: как остановить/приостановить выполнение теста в браузере?

У меня тяжелое (но очень интересное время) погружение в Driven Driven Development с использованием Cucumber, RSpec, Selenium и Rails.

У меня есть моя настройка, готовая для тестирования с Selenium, и смешно смотреть, как Firefox всплывает и запускается автоматически через мои сценарии. Но одна вещь, которую я хотел бы сделать, это приостановить или остановить выполнение в определенный момент, поэтому я могу проверить, что видит Селен в определенный момент.

Я знаю команду save_and_open_page, но это только показывает мне простой HTML без форматирования. Может быть, есть метод stop_execution или что-то, что останавливает Selenium без закрытия браузера?

Ответ 1

Установите pry, затем поставьте binding.pry в свой тест, где вы хотите приостановить его. По завершении нажмите Ctrl + D или введите exit в REPL, который открывается, чтобы продолжить выполнение.

Ответ 2

или просто:

 visit '/'
 sleep(inspection_time=5)
 visit '/dreamland'

Ответ 3

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

ask "Continue?"

Он прекратит выполнение, пока вы не введете y (Да)

Итак, например, это будет выглядеть так:

expect(page).to have_button('Submit')
ask "Continue?"
click_button('Submit')

Ответ 4

Используйте Отладчик, где вы хотите выполнить stop/pause выполнение.

или

В Selenium IDE вы можете щелкнуть правой кнопкой мыши по строке команд, и вы можете выбрать Установить/Очистить начальную точку до stop/pause выполнение.

Ответ 5

Хорошо, я заработал, установив ruby-debug19 (для Ruby 1.9.3), а затем просто установив точку останова где-то на этапе Cucumber.

http://rails.vandenabeele.com/blog/2011/12/21/installing-ruby-debug19-with-ruby-1-dot-9-3-on-rvm/

Другим вариантом является использование драгоценного камня Capybara-firebug, который добавляет шаг "После этого прекратите и позвольте мне отлаживать", который в основном, похоже, делает то же самое (я не знаю, полагается ли он на камни-отладки ruby).

Ответ 6

попробуйте использовать selenium.sleep(ms) это заставит выполнение теста ждать указанного количества времени

Ответ 7

Вы можете использовать это без установки каких-либо драгоценных камней в рельсах 5 или выше, используя byebug. Просто введите byebug в строку, на которой вы хотите приостановить тест.

Пример:

visit post_url(id: posts(:one).id)
byebug
click_on "...", match: :first

Выполнение этого приостановит тест после загрузки новой страницы, но до нажатия следующей кнопки. Если вы используете более старую версию rails, вам, возможно, придется установить gem byebug но это полезно для устранения неполадок, и я рекомендую использовать его независимо.