2012-06-20 2 views
11

У меня тяжелое (но очень интересное время) погружение в развитие поведения с использованием огурцов, RSpec, селен и рельсов.Rails and Selenium: как остановить/приостановить выполнение теста в браузере?

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

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

ответ

25

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

+0

Да, это действительно отличный ответ! Я уже так делаю, спасибо, что вернул мне этот старый вопрос. :) Кстати, 'pry-debugger' также дает вам некоторые базовые возможности отладчика. –

+0

Это отлично работает для меня, за исключением случаев, когда я привязываю binding.pry к представлению. Любые идеи о том, как приостановить выполнение в представлении? Я знаю, что мне действительно не нужно это делать, но иногда это может быть очень удобно. – peteretep

0

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

+0

Спасибо , это хороший намек, но в моем *** _ steps.rb selenium, похоже, не доступен: 'неопределенная локальная переменная или метод 'selenium' для # (NameError) ' –

+0

oops .. использование java. поэтому в коде selenium.sleep() selenium - это имя объекта .. так что вам нужно его соответствующим образом изменить :) – Acid

+0

Я попробовал его с 'page.driver.sleep (5000)', но затем я получаю 'private method' sleep 'вызван для # (NoMethodError) '. –

1

Использование Debugger, где вы хотите stop/pause выполнения.

или

В Selenium IDE вы можете правой кнопкой мыши на команд линии и вы можете выбрать Set/Clear Start пункт для stop/pause казни.

1

Хорошо, я получил его, установив 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/

Другой вариант заключается в использовании Капибара-поджигатель драгоценный камень, который добавляет «Тогда остановитесь и дайте мне отладить» шаг, который в основном, кажется, сделать то же самое (я не знаю, зависит ли это от рубина -debug).

16

или просто:

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

«Это может укусить вас двумя способами. Прежде всего, вы захотите установить время сна достаточно долго, чтобы оно дало много времени, чтобы получить ответ. Но это означает, что вы потратите много времени, ожидая ответ, таким образом, замедляя ваши тесты. Второй укус состоит в том, что, как бы долго вы ни спали, иногда этого будет недостаточно. В среде будет какое-то изменение, которое приведет к превышению сна - и вы получите ложную ошибку В результате я настоятельно призываю вас никогда не использовать голые соны, подобные этому ». от http://martinfowler.com/articles/nonDeterminism.html – Hugo

+1

Я бы не рекомендовал это для тестирования. Это только для осмотра. Имея что-то неприятное, как это, захотите удалить его, после осмотра. Вид 'p' для отладки или' console.log' –

0

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

ask "Continue?" 

Это остановит выполнение, пока не будет введен y (Да)

Так, например, он будет выглядеть следующим образом:

expect(page).to have_button('Submit') 
ask "Continue?" 
click_button('Submit') 
Смежные вопросы