2

我正在尝试让 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(还),我对这个错误感到困惑。任何人都可以对此有所了解吗?非常感谢珍妮

4

1 回答 1

6

webdriver-user-agent 抱怨您为 :agent 和 :orientation 传递的值由于方法不存在而不能小写。

我认为有两种解决方案:

  1. 升级到 Ruby 1.9.3。我猜和我一样,您使用 Ruby 1.8.7 之类的东西运行代码。Symbols 的 downcase() 方法在 1.8.7 中不存在,这会给您带来错误。因此,您需要具有该方法的更高版本的 Ruby(例如基于http://www.ruby-doc.org/core-1.9.3/Symbol.html的 1.9.3 )。

  2. 为 :agent 和 :orientation 值传入一个字符串(下面的示例)。看起来它适用于一个示例(尽管我不使用此 gem,因此无法告诉您其他地方是否存在问题)。

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

于 2012-05-24T15:26:28.360 回答