'downcase'的未定义方法。 (WATIR / Ruby相关.webdriver-user-agent)

时间:2012-05-24 14:57:30

标签: ruby webdriver watir user-agent watir-webdriver

我正在尝试让Watir模仿移动环境,并且我从非常有用的http://watirwebdriver.com/mobile-devices/逐字逐句地按照说明进行操作。这是我的代码。

#!/usr/bin/ruby
require 'rubygems'
require 'watir-webdriver'
require "webdriver-user-agent"
require 'headless'
$headmode = 0
$screens = 0
headless = Headless.new if $headmode == 1
headless.start if $headmode == 1

driver = UserAgent.driver(:browser => :firefox, :agent => :iphone, :orientation => :landscape)
....... snip ......
....... snip ......

抛出的异常是......

/var/lib/gems/1.8/gems/webdriver-user-agent-0.0.5/lib/webdriver-user-agent.rb:39:in `agent_string_for': undefined method `downcase' for :iphone:Symbol (NoMethodError)
    from /var/lib/gems/1.8/gems/webdriver-user-agent-0.0.5/lib/webdriver-user-agent.rb:11:in `driver'
    from ./test_CAPI.rb:11

不是Ruby开发人员,或者精通WATIR(还),我对此错误感到困惑。任何人都可以对此有所了解吗?非常感谢Janie

1 个答案:

答案 0 :(得分:6)

webdriver-user-agent抱怨您传递的值:agent和:orientation因为方法不存在而无法降级。

我认为有两种解决方案:

  1. 升级到Ruby 1.9.3。我猜测像我一样,你使用像Ruby 1.8.7这样的代码运行代码。符号的downcase()方法在1.8.7中不存在,这会给你错误。因此,您需要具有该方法的更高版本的Ruby(基于http://www.ruby-doc.org/core-1.9.3/Symbol.html的ex 1.9.3)。

  2. 传入:agent和:orientation值的字符串(下面的示例)。看起来它适用于一个例子(虽然我不使用这个gem所以不能告诉你其他地方是否有问题)。

    driver = UserAgent.driver(:browser =>:firefox,:agent =>'iphone',:orientation =>'landscape')