在运行我的规格时,我会发现Capybara无法根据标签等找到元素的错误。然后我想我想要HTML,或以某种方式调试错误。
这是/features/merge.feature
#Just a test!
Scenario: Cannot merge articles when not admin
Given I am not an admin
When I am on the edit article page
Then I should not see the "merge articles" form
这是:/feature/step_definitions/merge.rb - 它只包含“Given”语句!
Given /am not an admin$/ do
visit '/accounts/login'
puts "TEZT"
puts page.native
puts page.native.text
fill_in 'user_login', :with => 'editor_rico'
fill_in 'user_password', :with => 'a'
click_button 'Login'
end
Given /^I am an admin$/ do
visit '/accounts/login'
fill_in 'user_login', :with => 'admin_rico'
fill_in 'user_password', :with => 'a'
click_button 'Login'
end
然后我收到这个错误:
Scenario: Cannot merge articles when not admin
# features/article_merging.feature:20
Given I am not an admin
#features/step_definitions/article_steps.rb:39
cannot fill in, no text field, text area or password field with id, name, or label
'user_login' found (Capybara::ElementNotFound)
(eval):2:in `fill_in'
./features/step_definitions/article_steps.rb:44:in `/am not an admin$/'
features/article_merging.feature:21:in `Given I am not an admin'
Havin在这里与Cucumber合作很艰难。
1)为什么我得到上述
2)我如何调试它,我想看看HTML代码!
答案 0 :(得分:3)
当您的网页HTML不包含名称,ID或标签input
的任何textarea
或'user_login'
元素时,会显示此错误。如果您将launchy
gem添加到Gemfile中,您将能够看到页面的外观:
在Gemfile
:
group :test do
gem 'launchy'
gem 'capybara'
...
end
然后,在feature/step_definitions/merge.rb
文件中:
Given /^I am not an admin$/ do
visit '/accounts/login'
save_and_open_page
end
save_and_open_page
会在您的浏览器中打开当前页面,因此您可以检查HTML并查看其外观。
希望它有所帮助! :)
答案 1 :(得分:1)
它认为上述代码的问题是“页面”在您结束该部分之后才可用。
尝试将'puts'放入'When'或'Then'步骤
您可以按如下方式查询页面(假设您正在使用RSpec)
page.should have_content 'foo'
page.should have_selector 'h1', text: => 'Hello dave'
希望这有帮助
答案 2 :(得分:0)
您还可以通过将page.body
打印到标准输出来查看HTML响应。
Given /^I am not an admin$/ do
visit '/accounts/login'
puts page.body
end