2011-04-10 3 views
0

두 가지 시나리오가있는 간단한 오이 기능이 있습니다. 그것은 기본 로그인을 수행하고 로그 아웃하기 위해 watir-webdriver를 사용합니다. 첫 번째 시나리오 (로그인)가 잘 실행되고, watir 메소드가 문제없이 실행됩니다. 두 번째 시나리오는 (전체 기능을 실행을 통해)을 실행하면, 내가 얻을이 주위에 재생기능에서 두 번째 시나리오를 실행할 때 오이 NoMethodError

NoMethodError: undefined method `wait_until' for nil:NilClass

이 오류를 던져 두 번째 시나리오의 모든 호출하는 것을 Watir과 - webdriver 방법을 밝혀, 같은 동안 첫 번째 시나리오에서는 메서드가 제대로 작동합니다. 나는 범위 문제가 있다고 가정하고 두 번째 시나리오의 단계 정의에서 "watir-webdriver"를 사용하지 않으려 고 시도했습니다. 두 시나리오에 대한 단계 정의가 포함되었습니다. Ruby 1.9.2에서 모든 보석을 업데이트했으며 Cucumber 0.10.0과 0.10.2를 시도했습니다.

죄송합니다. 나는 루비/오이/와트르에게 아주 익숙하며 게시하기 전에 이것을 몇 시간 동안 정렬하려고했습니다. 모든 조언을 주셔서 대단히 감사합니다!

require "watir-webdriver" 

Given /^I have the proper credentials$/ do 
    @username = "matt" 
    @password = "abc123" 
end 
When /^I am on the login page$/ do 
    @browser = Watir::Browser.new(:firefox) 
    @browser.goto ("http://dev.example.net") 
end 
When /^I enter username and password$/ do 
    @browser.text_field(:class, /x-form-field x-form-text/).set @username 
    @browser.text_field(:index, 1).set @password 
    sleep 1 
    @browser.button(:text, 'Login').click 
end 
Then /^I should should be granted access$/ do 
    @browser.wait_until { @browser.text.include? "Global Priorities" } 
    fail unless @browser.text.include? 'Global Priorities' 
end 

Given /^I am currently logged in$/ do 
    @browser.wait_until { @browser.text.include? "Welcome: #{@username}" } 
    fail unless @browser.text.include? "Welcome: #{@username}" 
end 
When /^I click the Log Out button$/ do 
    @browser.button(:text, "Log Out").click 
end 
Then /^I should be logged out$/ do 
    pending 
end 
+0

내 env.rb 파일을 설정하여 브라우저 인스턴스 (모든 시나리오에 공통)를 실행 한 다음 단계에서 새 브라우저 인스턴스를 제거하여이를 정렬했습니다. 감사. – Matt

답변

1

매트, 알아 낸 것 같습니다. Nil 클래스에 대해 정의되지 않은 메소드에 관한 오류가 표시 될 때마다 : NilClass는 해당 메소드를 사용하려는 모든 것이 더 이상 존재하지 않는다는 것을 의미합니다.

브라우저 개체에 잘못된 유형의 변수 (인스턴스/클래스/전역)를 사용하고 있거나 두 번째 실행 중에 액세스하지 않는이 브라우저를 정의한 것일 수 있습니다.

관련 문제