2010-03-10 8 views
42

Я начал мигрировать из огурца + webrat в огурец + капибара. Теперь поведение «я должен видеть», кажется, несколько отличается. Большинство из них терпят неудачу, хотя я ничего не менял на странице. Я заменил фрагмент, который должен быть найден с некоторыми материалами, которые есть на каждой странице, а для некоторого текста он работает, а для другого текста - нет. Я не могу найти шаблон в том, что находится в содержимом страницы, а что нет. Webrat используется для печати содержимого страницы, которое оно обнаружило, если оно не содержит требуемой фразы. Есть ли в любом случае, чтобы capybara показывал, какой текст он получил со страницы, на которой он пытался найти текст?Как я могу увидеть, что капибара обнаружила в неудачном шаге огурца?

+63

Как кто-то совершенно незнакомый с названными технологиями, это мой любимый вопрос о переполнении стека, когда-либо! – Oddthinking

+1

Да, это звучит как-то связанное с зоопарком. – ajmurmann

+1

lol, бедный capybara! –

ответ

29

Попробуйте добавить этот шаг:

Then show me the page 
+0

Большое спасибо! Это очень помогло! – ajmurmann

+0

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

5

Вы также можете использовать «Тогда покажите мне ответ», который выводит HTML в консоль, если вы не хотите использовать браузер.

+1

команда не в пределах огурец для rails3 –

+6

'печать страница.html' (в вашем определении шага) работает в Rails3 –

39

Then show me the page звонки webrat/capybara в основе save_and_open_page метод. Обнаружено, что полезно при работе со стейком.

21

Если вы хотите, чтобы браузер открывал страницу, когда страница терпит неудачу, вы используете драгоценный камень «запуска». Добавьте его в свой файл драгоценного камня, а затем в/функциях/поддержки создать файл с именем debugging.rb с содержимым:

After do |scenario| 
    save_and_open_page if scenario.failed? 
end 
+1

Это впечатляюще полезно, спасибо. Похоже, он должен быть установлен по умолчанию с помощью Cucumber. – dankohn

9

Если вы используете Javascript или Ajax на ваших страницах, и хочет видеть, что происходит , Я обнаружил, что драйвер Poltergeist очень хорошо позволяет вам попасть в DOM и выяснить, что происходит не так.

Если вы установили драйвер Капибара с возможностью удаленной отладки:

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, inspector: true) 
end 

Вы можете положить следующую строку в ваших шагов:

page.driver.debug 

, который выстреливает новый Хром браузер с текущее состояние DOM, позволяющее вам попасть на консоль. (В моей версии Linux мне пришлось сопоставить хром с хромированным браузером, но в остальном он работал нормально).

Источник информации: http://jonathanleighton.com/articles/2012/poltergeist-0-6-0/

7

Then show me the response не работает для меня с огурца 1.1. я нашел полезным написать шаг, используя команду водосвинку в:

print page.html

Это выводит текущее состояние DOM

0

Вы можете всегда это сделать снимок экрана, когда что-то не удалось. Я отлаживаю много неудачных функций таким образом.