【问题标题】:undefined method for 'downcase'. (WATIR/Ruby related. webdriver-user-agent)'downcase' 的未定义方法。 (WATIR/Ruby 相关。webdriver-user-agent)
【发布时间】:2012-05-24 14:57:29
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    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')

    【讨论】:

    猜你喜欢
    • 2018-10-16
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多