У мене проста функція Огірка з двомасценаріїв. Він використовує 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 - це означає, що все, що намагалося використовувати цей метод, вже не існує для того, щоб робити речі.
Це може означати, що ви використовуєте неправильний типзмінна (екземпляр / клас / глобальна) для вашого об’єкта браузера, або що ви вказали цей браузер десь, до якого не можна отримати доступ під час другого запуску.