Ответ 1
Попробуйте добавить этот шаг:
Then show me the page
Я начал мигрировать от огурца + webrat до огурца + капибара. Теперь поведение "я должен видеть", кажется, несколько отличается. Большинство из них терпят неудачу, хотя я ничего не менял на странице. Я заменил фрагмент, который должен быть найден с некоторыми материалами, которые есть на каждой странице, а для некоторого текста он работает, а для другого текста - нет. Я не могу найти шаблон в том, что находится в содержимом страницы, а что нет. Webrat использовал для печати то, что содержимое страницы было найдено, если оно не содержит требуемой фразы. Есть ли в любом случае, чтобы capybara показывал, какой текст он получил со страницы, на которой он пытался найти текст?
Попробуйте добавить этот шаг:
Then show me the page
Then show me the page
вызывает метод webrat/capybara, лежащий в основе метода save_and_open_page
. Обнаружено, что полезно при работе со стейком.
Если вы хотите, чтобы браузер открывал страницу, когда страница терпит неудачу, вы используете драгоценный камень "запуска". Добавьте его в свой файл gem, а затем в /features/support создайте файл debugging.rb с содержимым:
After do |scenario|
save_and_open_page if scenario.failed?
end
Если вы используете Javascript или Ajax на своих страницах и хотите узнать, что происходит, я обнаружил, что драйвер Poltergeist очень хорошо позволяет вам попасть в DOM и выяснить, что происходит не так.
Если вы установили драйвер Capybara с опцией удаленной отладки:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, inspector: true)
end
Затем вы можете поместить следующую строку в свои шаги:
page.driver.debug
Запустит новый браузер Chromium с текущим набором состояний DOM, позволяя вам войти в консоль. (В моей версии Linux мне пришлось сопоставить хром с хромированным браузером, но в остальном он работал нормально).
Источник информации: http://jonathanleighton.com/articles/2012/poltergeist-0-6-0/
Then show me the response
не работал у меня с огурцом 1.1. Мне было полезно написать шаг с помощью команды capybara:
print page.html
Это выводит текущее состояние DOM
Вы также можете использовать "Then show me response", который выводит HTML на консоль, если вы не хотите использовать браузер.
Вы всегда можете сделать снимок экрана, если что-то не получилось. Я отлаживаю много неудачных функций таким образом.