/ / Краставица NoMethodError при изпълнение на втори сценарий в функция - рубин, краставица, ватир

Краставица NoMethodError при изпълнение на втори сценарий в даден елемент - рубин, краставица, watir

Имам проста функция с краставици с двесценарии. Той използва watir-webdriver за извършване на основно влизане и излизане. Първият сценарий (влизане) работи добре, а методите watir се изпълняват без проблем. Когато се изпълни вторият сценарий (чрез изпълнение на функцията като цяло), получавам:

NoMethodError: неопределен метод `wait_until” за nil: NilClass

Като си поиграхме с това, разкрихте, че всякакви обажданияметодите watir-webdriver във втория сценарий хвърлят тази грешка, докато същите методи са добре в първия сценарий. Предполагам, че имам проблем с обхвата и съм пробвал „изисквам„ watir-webdriver “„ във втория сценарий „стъпка дефиниции без резултат. Включих определенията на стъпките за двата сценария. Обнових всичките си скъпоценни камъни и сте опитвали Краставица 0.10.0 и 0.10.2 на Ruby 1.9.2.

За съжаление; Аз съм съвсем нов за рубин / краставица / 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

Мат, изглежда, че сега разбрахте. Всеки път, когато видите грешка по отношение на неопределен метод за nil: NilClass - това означава, че каквото и да се опитваше да използва този метод, вече не съществува, за да върши нещата.

Това може да означава, че използвате грешен типпроменлива (инстанция / клас / глобален) за вашия браузър обект или че сте определили този браузър на друго място, до което не можете да получите достъп по време на втория цикъл.