Can't build Firefox browser using watir-webdriver
I have firefox 20 that works with my version of watir-webdriver. I am using the following code which can open any phantomjs browser or headless browser. Chrome and phantom work, but firefox throws an exception.
Why? How to fix it?
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
An 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
0
source to share
2 answers
your code works for me without problem.
$ 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 comes with selenium-webdriver, you probably just need to update your gem (s)
+1
source to share
Ruby 1.8, Firefox 20, Watir 0.6.2 all look about 2 years old. json_pure-1.4.3, however, 5 years old - https://rubygems.org/gems/json_pure/versions
Try updating this file.
0
source to share