RubyMine - NoMethodError:nil的未定义方法'get':nilClass - Webdriver UserAgent

时间:2013-05-17 16:27:05

标签: ruby selenium-webdriver user-agent rubymine

我是RubyMine的新手并试图调试我自己没有写过的项目。

我运行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

我相信这是使用Selenium-Webdriver导航到URL的正确格式。所以这促使我检查环境文件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以确保正确调用了selenium webdriver用户代理,但我不确定它是否正确。我使用Interactive Ruby来查看是否可以使用UserAgent.Driver格式调用驱动程序但是它遇到了错误

NameError: uninitialized constant UserAgent  

如果有人对如何为RubyMine正确格式化UserAgent有任何建议,我会非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

看起来您的代码正在尝试使用Firefox运行一些测试,其中的配置文件使用用户代理属性来模拟iPhone。

不幸的是,您的代码使用的是Alister Scott撰写的depreciated gem。您将无法继续使用此gem,并且应该寻找解决方法。

更新 Alister Scott 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正在浏览时那样呈现。