我正在使用带有RSpec(v2.11.0)的Capybara(v2.0.1),我的规范与README上的示例非常相似:
require 'capybara/rspec'
require 'capybara/dsl'
# other setup…
describe "Sign in" do
include Capybara::DSL
before do
within("#session") do
fill_in 'Login', :with => 'user@example.com'
fill_in 'Password', :with => 'password'
end
click_link 'Sign in!'
end
subject { page }
it { should have_content "logged_in? true" }
end
不幸的是,这是我看到的失败信息:
失败/错误:在(“#session”)内做 水豚:: ElementNotFound:
无法找到css“#session”
但它没有显示它所使用的源的输出,并且在点击该链接后涉及重定向,所以我想确定它正在检查它是什么。
似乎Capybara正在抑制警告(我觉得很烦人,坦率地说),因为我在几个地方尝试warn page.inspect
而在输出中没有任何内容。
有人能告诉我怎么做吗?非常感谢任何帮助或见解。
我应该补充一点,我没有使用Rails或Cucumber。
答案 0 :(得分:4)
我只是在测试开始时添加这一行:
puts "#{page.html.inspect}"
我必须在命令行上查看所有内容,但它很快且很脏。
答案 1 :(得分:2)
capybara的save_and_open_page
将html写入您应用的tmp目录,然后在默认浏览器中将其打开。
答案 2 :(得分:1)
我使用irb作为Selenium的实时调试器,所以我可以跟随它。非常适用于调试Capybara / Selenium的奇怪之处。
答案 3 :(得分:0)
您可以使用page.html查看整个来源。从那里通过检查#session的第一场比赛很容易检查。