Capybara :: ElementNotFound - 如何查看它检查的来源?

时间:2012-12-09 23:19:01

标签: ruby rspec capybara

我正在使用带有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。

4 个答案:

答案 0 :(得分:4)

我只是在测试开始时添加这一行:

puts "#{page.html.inspect}"

我必须在命令行上查看所有内容,但它很快且很脏。

答案 1 :(得分:2)

capybara的save_and_open_page将html写入您应用的tmp目录,然后在默认浏览器中将其打开。

这些日子里,在水豚的自述部分debugging section中提到过它。

答案 2 :(得分:1)

我使用irb作为Selenium的实时调试器,所以我可以跟随它。非常适用于调试Capybara / Selenium的奇怪之处。

答案 3 :(得分:0)

您可以使用page.html查看整个来源。从那里通过检查#session的第一场比赛很容易检查。