Jan*_*kie 2 ruby user-agent webdriver watir 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 ......
Run Code Online (Sandbox Code Playgroud)
被抛出的例外是......
/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
Run Code Online (Sandbox Code Playgroud)
不是Ruby开发人员,或者精通WATIR(还),我对这个错误感到困惑.任何人都可以对此有所了解吗?非常感谢Janie
webdriver-user-agent抱怨您传递的值:agent和:orientation因为方法不存在而无法降级.
我认为有两种解决方案:
升级到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 ).
传入:agent和:orientation值的字符串(下面的示例).看起来它适用于一个例子(虽然我不使用这个gem所以不能告诉你是否有其他问题).
driver = UserAgent.driver(:browser =>:firefox,:agent =>'iphone',:orientation =>'landscape')