2012-12-09 3 views
0

내가 RSpec에 (v2.11.0)와 카피 바라 (V2.0.1)를 사용하고, 나는이 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"

그러나 그것은 나에게 그것이 사용되는 소스의 출력을 표시하지 않으며, 해당 링크를 클릭 한 후 내가이에 대해 확인 있는지 확실 싶습니다 참여 리디렉션이있다.

카피 바라 (Capybara)가 여러 장소에서 아무 것도 출력하지 않고도 warn page.inspect을 시도 했으므로 카피 바라가 경고를 억제하고있는 것으로 보입니다.

내가 어떻게 할 수 있는지 알려주시겠습니까? 주어진 도움이나 통찰력은 많이 감사하겠습니다.

필자는 Rails 또는 Cucumber를 사용하지 않고 있다고 덧붙여 야합니다.

답변

1

capybara의 save_and_open_page은 html을 앱의 tmp 디렉토리에 쓰고 기본 브라우저에서 엽니 다.

요즘 capybara의 readme 섹션의 debugging section에 나와 있습니다.

0

page.html을 사용하여 전체 소스를 볼 수 있습니다. 거기에서 #session의 첫 번째 일치를 검사하여 검사하기가 꽤 쉽습니다.

puts "#{page.html.inspect}" 

것은 내가 명령 줄에 모든 통해보고해야하지만, 그것은 신속하고 더러운 :

+0

응답 해 주셔서 감사합니다. 예제 블록 내에서 STDOUT을 얻을 수 없을 때 소스를 검사 할 수있는 방법을 모르겠습니다. 그게 왜 일어날까요? 이전 블록은 STDOUT을 허용하고, 이것은 Capybara를 사용할 때만 발생합니다. Rack :: Test는이 문제를주지 않습니다. – iain

+0

나는 [다른 사람도 stdout 문제가 너무] 참조 (http://stackoverflow.com/questions/9402537/how-to-access-stdout-or-stderr-in-a-capybara-integration-test), 그래서 나는 그 부분을 카피 바라 메일 링리스트에 공개했습니다. 당신의 도움을 주셔서 감사합니다. – iain

+1

디버거 보석을 사용하여이 방식으로 볼 수 있습니까? – bigtunacan

4

난 그냥 내 테스트의 시작이 줄을 추가합니다.

1

나는 irb를 Selenium과 함께 라이브 디버거로 사용하므로 따라갈 수 있습니다. Capybara/Selenium에서 진행되는 이상 함을 디버깅하는 데 매우 유용합니다.

관련 문제