2015-04-04 61 views
0

我有我的版本的watir-webdriver工作的firefox 20。我使用下面的代碼可以打開任何瀏覽器或無頭phantomjs瀏覽器。 Chrome和幽靈般的工作,但Firefox會引發異常。無法用watir-webdriver創建Firefox瀏覽器

爲什麼?我該如何解決 ?

require 'rubygems' 
require 'watir-webdriver' 
require 'phantomjs' 

def get_browser(browser_name) 
    browser = nil 
    if browser_name != nil  
    puts "\n#{browser_name} created\n" 
    browser = Watir::Browser.new browser_name.to_sym 
    else 
    puts "creating phantom browser !" 
    browser = Watir::Browser.new :phantomjs 
    puts "\nphantom created\n" 
    end 
    return browser 
end 

browser_name = ARGV[0] 
browser = get_browser(browser_name) 
puts "\n\n" 

browser.close 

Exception-

C:/code/ruby/lib/ruby/gems/1.8/gems/json_pure-1.4.3/lib/json/pure/generator.rb:393:in `to_json': undefined method `ascii_only?' for {}:Hash (NoMethodError) 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/multi_json-1.3.7/lib/multi_json/adapters/json_common.rb:11:in `dump' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/multi_json-1.3.7/lib/multi_json.rb:115:in `dump' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/common/json_helper.rb:23:in `json_dump' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/profile.rb:254:in `write_prefs' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/profile.rb:253:in `each' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/profile.rb:253:in `write_prefs' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/profile.rb:252:in `open' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/profile.rb:252:in `write_prefs' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/profile.rb:232:in `update_user_prefs_in' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/profile.rb:79:in `layout_on_disk' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/launcher.rb:58:in `create_profile' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/launcher.rb:34:in `launch' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/socket_lock.rb:20:in `locked' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/bridge.rb:24:in `initialize' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/common/driver.rb:31:in `new' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/common/driver.rb:31:in `for' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver.rb:67:in `for' 
     from C:/code/ruby/lib/ruby/gems/1.8/gems/watir-webdriver-0.6.2/lib/watir-webdriver/browser.rb:46:in `initialize' 
     from watir-browser.rb:9:in `new' 
     from watir-browser.rb:9:in `get_browser' 
     from watir-browser.rb:19 

回答

1

你的代碼爲我工作沒有問題。

$ ruby test.rb 
creating phantom browser ! 
phantom created 

$ ruby test.rb firefox 
firefox created 

$ ruby test.rb chrome 
chrome created 

$ gem list | grep webdriver 
selenium-webdriver (2.45.0, 2.44.0) 
watir-webdriver (0.7.0, 0.6.11) 

的Firefox自帶硒webdriver的,你可能只需要更新您的寶石(S)

+0

selenium-webdriver(2.33.0),watir-webdriver(0.6.2)。由於「約束」而無法真正更新它們。順便說一下,卡爾,你的首選語言和QA自動化測試工具包是什麼? – stack1 2015-04-04 17:34:12

+1

@ stack1我是watir-webdriver和顯然Ruby的黃瓜的粉絲(我甚至沒有按照它的意圖使用黃瓜) – Carldmitch 2015-04-05 14:06:17

0

紅寶石1.8,火狐20的Watir 0.6.2都看關於2ish年過時。 json_pure-1.4.3然而是5歲 - https://rubygems.org/gems/json_pure/versions

嘗試更新那一個。

+0

是的,我的寶石很舊。由於「約束」,我無法更新它們。如果不是他們,我會使用最新的寶石和瀏覽器。希望一些神奇的解決方法或猴子補丁。 – stack1 2015-04-04 18:21:37

+1

是的,如果你無法控制版本控制,你最終會面臨一系列開源項目的問題。我懷疑multi_json期望與json_pure不同。如果你能弄清楚它到底是什麼的話,那麼你可以猴子補丁,但是你可能只需要把它記下來,因爲在你的限制之內是不可能的。 – titusfortner 2015-04-04 18:25:17