2012-12-09 52 views
0

我使用的水豚(V2.0.1)使用RSpec(v2.11.0),我有非常類似的例子在README一個規範:Capybara :: ElementNotFound - 我如何看到它檢查的源代碼?

require 'capybara/rspec' 
require 'capybara/dsl' 

# other setup… 

describe "Sign in" do 
    include Capybara::DSL 

    before do 
    within("#session") do 
     fill_in 'Login', :with => '[email protected]' 
     fill_in 'Password', :with => 'password' 
    end 
    click_link 'Sign in!' 
    end 

    subject { page } 
    it { should have_content "logged_in? true" } 
end 

不幸的是,這是失敗的消息我看到:

Failure/Error: within("#session") do
Capybara::ElementNotFound:
Unable to find css "#session"

,但它不告訴我它的使用光源的輸出,並有參與點擊該鏈接後,所以我想,以確保什麼是它的檢查對重定向。

似乎水豚是壓制警告(我覺得很煩人,坦率地說),因爲我在幾個地方試過warn page.inspect,沒有輸出。

任何人都可以告訴我我該如何做到這一點?任何幫助或見解給予非常感謝。

我應該加我沒有使用Rails或黃瓜。

回答

1

capybara的save_and_open_page將html寫入您的應用的tmp目錄,並在默認瀏覽器中打開它。

這些天在水豚的自述部分的debugging section中提到它。

0

您可以使用page.html查看整個源代碼。從那裏檢查#session的第一場比賽非常容易。

+0

感謝您的回覆。當我無法從示例塊中獲取任何內容時,我不知道如何檢查源代碼。任何想法爲什麼會這樣? A塊之前確實允許STDOUT,這隻發生在我使用水豚時,Rack :: Test不會給我這個問題。 – iain

+0

我看到[別人也有stdout問題](http://stackoverflow.com/questions/9402537/how-to-access-stdout-or-stderr-in-a-capybara-integration-test),所以我已經開放了這部分到Capybara郵件列表。謝謝你的幫助。 – iain

+1

你可以使用調試器gem並以這種方式查看嗎? – bigtunacan

4

我只是在我的測試開始加入這一行:

puts "#{page.html.inspect}" 

我已經經歷過這一切看在命令行上,但它的快速和骯髒。

1

我使用irb作爲Selenium的實時調試器,所以我可以按照原樣進行操作。對於調試Capybara/Selenium的怪異特性非常有用。