ここで言及されている webdriver-user-agent を使用しています – http://watirwebdriver.com/mobile-devices/
これは、この宝石を試すときに使用しているコードです
ブラウザ: FF/Chrome Ruby: 1.9.3 / Selenium:2.30. 0 / ワティル : 4.0.2
http_client = Selenium::WebDriver::Remote::Http::Default.new
http_client.timeout = HTTP_TIMEOUT
profile = Selenium::WebDriver::Firefox::Profile.new
device = ENV["DEVICE"]
orientation = ENV["ORIENTATION"]
driver = UserAgent.driver(:browser => :firefox, :agent =>device, :orientation=>orientation)
devices = UserAgent.resolution_for(device,orientation)
UserAgent.resize_inner_window(driver,devices[0],devices[1])
Watir::Browser.new driver
最後のステートメントが実行されると、次のエラーが発生します
(STEP) Launching FIREFOX (using web driver user agent)……
browser:
#
undefined method `to_sym’ for # (NoMethodError)
/Users/user/.rvm/gems/ruby-1.9.3-p194/gems/watir-4.0.2/lib/watir/loader.rb:42:in `load_driver_for’
/Users/user/.rvm/gems/ruby-1.9.3-p194/gems/watir-4.0.2/lib/watir/loader.rb:8:in `new’
いくつかの調査に基づいて、Selenium webdriver オブジェクトで .to_sym を試行しているため、以下の強調表示された行で問題が発生しています。
def load_driver_for(browser)
if browser && browser.to_sym != :ie && Watir.driver == :classic
Watir.driver = :webdriver
end
Watir.load_driver
end
しかし、以下のような行を追加すると、この gem は期待どおりに機能します。
def load_driver_for(browser)
if “#{ENV["BROWSER"]}”.eql?(“chrome_useragent”)||”#{ENV["BROWSER"]}”.eql?(“firefox_useragent”)
Watir.driver = :webdriver
else
if browser && browser.to_sym != :ie && Watir.driver == :classic
Watir.driver = :webdriver
end
Watir.load_driver
end
end
これはフレームワーク外のwatirコードであるため、これを行う正しい方法ではありません。この状況を回避する方法について何か提案はありますか?