2013-05-17 2 views
1

Я новичок в RubyMine и пытаюсь отладить проект, который я сам не написал.RubyMine - NoMethodError: Неопределенный метод 'get' for nil: nilClass - Webdriver UserAgent

Ошибка при запуске Project.feature и остановилась в первой строке «Учитывая, что я зашел на этот сайт».

"NoMethodError: Undefined method 'get' for nil:nilClass" in filepath/Common_steps_json.rb:14 in '/^I go to this website$' 

Переход по ссылке, предоставленной, он направил меня к моему Common_steps_json.rb файл, где код написан был

Given /^I go to this website$/ do 
@driver.get 'https://www.somewebsite.com/field1/field2/' 
sleep 3 
end 

Я считаю, что это правильный формат для перехода к URL-адресу с помощью Selenium-WebDriver , Поэтому мне было предложено проверить файл окружения env.rb, чтобы узнать, как вызван драйвер. Там я нашел это.

require "selenium-webdriver" 
require "webdriver-user-agent" 
. 
. 
. 
Before('@driver_iphone_portrait') do 
@driver = UserAgent.driver(:browser => :firefox, :agent => :iphone, :orientation =>  :portrait) 
@base_url = 'https://www.somewebsite.com/' 
@driver.manage.timeouts.implicit_wait = 2 
@verification_errors = [] 
end 

Я проверил эту link, чтобы убедиться, что агент пользователя Селен WebDriver был назван правильно, но я не уверен, что это. Я использовал Interactive Ruby, чтобы увидеть, если я мог бы вызвать драйвер, используя формат UserAgent.Driver но он столкнулся с ошибкой

NameError: uninitialized constant UserAgent 

Если у кого есть какие-либо советы о том, как правильно форматировать UserAgent для RubyMine, я бы очень признателен , Благодаря!

ответ

2

Похоже, ваш код пытается запустить некоторые тесты с использованием Firefox с профилем, который использует свойство агента пользователя для эмуляции iPhone.

К сожалению, ваш код код depreciated gem написан Alister Scott. Вы не сможете продолжать использовать этот драгоценный камень и должны искать работу.

UPDATE Алистер Скотт just announced that the maintenance of the gem has been taken over by Jeff "Cheezy" Morgan и доступен на Github repo.


На самом деле, это выглядит, как это было довольно простой и стандартный камень оболочки, которое вы можете использовать все без слащавой обертки благости. На самом деле, вы можете легко настроить этот параметр в вашем WebDriver Profile setup

попробовать что-то вроде этого, чтобы заменить строку UserAgent (и вынуть require 'webdriver-user-agent' линию тоже):

profile = Selenium::WebDriver::Firefox::Profile.new 
profile["general.useragent.override"] = "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3" 
@driver = Selenium::WebDriver.for :firefox, :profile => profile 

Это должно создать @driver объект и позволит вам использовать метод get для открытия веб-сайта с помощью браузера Firefox. Браузер должен отправлять в заголовки запросов пользовательский агент, указанный вами в коде, и ваши веб-страницы должны отображаться так, как если бы iPhone просматривался.

+1

Спасибо bgoad! Я не знал, что драгоценный камень, используемый в коде, был обесценен. Обходной путь делает блестящую работу по настройке @driver для отображения веб-страницы в качестве Iphone. –

 Смежные вопросы

  • Нет связанных вопросов^_^