/ / Огірковий NoMethodError під час запуску другого сценарію в функції - рубін, огірок, ватір

Огірок NoMethodError при запуску другого сценарію в функції - рубінові, огірки, ватир

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

NoMethodError: не визначений метод `wait_until" для nil: NilClass

Граючи з цим виявило, що будь-які дзвінкиМетоди watir-webdriver у другому сценарії скидають цю помилку, тоді як ті ж методи чудово підходять у першому сценарії. Я припускаю, що у мене проблема з сферою застосування, і я намагався "вимагати" watir-webdriver "" у кроці визначення мого другого сценарію безрезультатно. Я включив визначення кроків для двох сценаріїв. Я "оновив усі мої дорогоцінні камені та спробували огірок 0.10.0 та 0.10.2 на Ruby 1.9.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

Відповіді:

1 для відповіді № 1

Метт, схоже, ти зараз це зрозумів. Кожного разу, коли ви бачите помилку щодо невизначеного методу для nil: NilClass - це означає, що все, що намагалося використовувати цей метод, вже не існує для того, щоб робити речі.

Це може означати, що ви використовуєте неправильний типзмінна (екземпляр / клас / глобальна) для вашого об’єкта браузера, або що ви вказали цей браузер десь, до якого не можна отримати доступ під час другого запуску.