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に渡した値を小文字にできないと文句を言っています。

私は2つの解決策があると思います:

  1. Ruby1.9.3にアップグレードします。私のように推測していますが、Ruby1.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の値の文字列を渡します(以下の例)。1つの例で機能するようです(ただし、このgemは使用していないため、他に問題があるかどうかはわかりません)。

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

于 2012-05-24T15:26:28.360 に答える