Cucumber NoMethodError при запуске второго сценария в элементе - PullRequest
0 голосов
/ 10 апреля 2011

У меня есть простая функция Cucumber с двумя сценариями. Он использует watir-webdriver для базового входа и выхода. Первый сценарий (вход в систему) работает нормально, и методы watir выполняются без проблем. Когда запускается второй сценарий (через запуск функции в целом), я получаю:

NoMethodError: неопределенный метод `wait_until 'для nil: NilClass

Игра с этим показала, что любые вызовы методов watir-webdriver во втором сценарии вызывают эту ошибку, в то время как те же самые методы хороши в первом сценарии. Я предполагаю, что у меня проблема с областью действия, и я попытался «потребовать« watir-webdriver »» в определениях шагов второго сценария, но безрезультатно. Я включил определения шагов для двух сценариев. Я обновил все свои драгоценные камни и попробовал Cucumber 0.10.0 и 0.10.2 на Ruby 1.9.2.

К сожалению, Я довольно новичок в ruby ​​/ cucumber / watir и пытался разобраться в этом за несколько часов до публикации. Большое спасибо за любой совет!

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

1 Ответ

1 голос
/ 11 апреля 2011

Мэтт, похоже, ты понял это сейчас.Всякий раз, когда вы видите ошибку, касающуюся неопределенного метода для nil: NilClass - это означает, что все, что пыталось использовать этот метод, больше не существует, чтобы что-то делать с ним.переменная (экземпляр / класс / глобальная) для вашего объекта браузера, или что вы определили этот браузер где-то, к чему нет доступа во время второго прогона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...