Тестирование с помощью Cucumber и Selenium: как посмотреть, что он видит в браузере?

Я тестирую сценарий в Rails с Cucumber, и он возвращается, говоря, что не может найти ссылку редактирования, по которой можно щелкнуть. Если я сам зайду на страницу, то она там. Очевидно, я делаю что-то не так, но я не вижу этого.

Если я добавлю тег @selenium перед своим сценарием, он выполнит тесты в Firefox. Но если я вижу, что браузер открывается и закрывается, и если ему не нужно вмешательство от меня (например, для подтверждения удаления), он проходит мимо, прежде чем я могу увидеть, что он делает.

Есть ли способ увидеть, что он видит в браузере, и двигаться вперед шаг за шагом?


person Nathan Long    schedule 10.11.2010    source источник


Ответы (7)


Чтобы увидеть, что отображается в браузере в определенный момент времени, добавьте этот шаг в свой сценарий:

Then show me the page

Вы можете не получить весь стиль, это зависит.

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

Then /^I pause for a while$/ do
  sleep 30
end

Это должно дать вам 30 секунд, чтобы просмотреть страницу, пока она отображается в браузере.

person Theo    schedule 10.11.2010
comment
Сочетание этих двух вещей прекрасно! Большое спасибо. - person Nathan Long; 11.11.2010

Проверьте эту страницу: "Приостановка сценариев Cucumber для отладки"

person bsimm    schedule 16.11.2010

Я решил это, выполнив Cucumber шаг

Then /^Wait for keypress$/ do
  STDIN.getc 
end

Очень похоже на решение с тегами, но менее шумное. Таким образом, я могу остановить выполнение теста в любое время.

person paulus    schedule 09.07.2012

Если вы хотите увидеть, что видит селен, добавьте в свою функцию следующее:

@leave_the_window_open
@javascript
Feature: The failing feature you want to click through
(...)

Чтобы это сработало. вам нужно следующее Afterdefinition где-то в вашем пути загрузки огурца:

After('@leave_the_window_open') do |scenario|
  if scenario.respond_to?(:status) && scenario.status == :failed
    print "Step Failed. Press Return to close browser"
    STDIN.getc
  end 
end

см. пример здесь

Вуаля: теперь окно браузера остается открытым, пока вы не нажмете Enter в консоли. Вы можете щелкнуть вокруг и осмотреть все.

person user971925    schedule 29.09.2011

Почему бы не настроить инструмент записи экрана и не запустить его на любом веб-драйвере дисплея? Мне кажется, это хорошее низкотехнологичное решение.

person CBA    schedule 08.12.2010

Обычно я использую метод ask, чтобы приостановить действие, чтобы посмотреть, что происходит. Я буду использовать Firebug для изучения проблемы, пока все приостановлено. См. здесь, чтобы узнать, как использовать Firebug с Cucumber для просмотра CSS/JS, и Т. Д.

Пример метода запроса:

res = ask('Where is that error coming from??')

Вы также можете написать строку запроса, чтобы фактически завершить тест, если что-то выглядит не так, но действует на возвращаемое значение.

Другой вариант — использовать отладчик ruby ​​​​и проверить все, что работает. Вот вопрос SO, объясняющий, как это работает.

person SnapShot    schedule 18.01.2012