When running Ruby UI tests with Capybara I am getting Error:
Selenium::WebDriver::Error::WebDriverError: unable to connect to Mozilla geckodriver 127.0.0.1:4444
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/common/service.rb:130:in `connect_until_stable'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/common/service.rb:74:in `block in start'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/common/socket_lock.rb:41:in `locked'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/common/service.rb:71:in `start'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/firefox/w3c_bridge.rb:41:in `initialize'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/common/driver.rb:52:in `new'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/common/driver.rb:52:in `for'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver.rb:88:in `for'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/capybara-2.18.0/lib/capybara/selenium/driver.rb:23:in `browser'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/capybara-2.18.0/lib/capybara/selenium/driver.rb:49:in `visit'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/capybara-2.18.0/lib/capybara/session.rb:274:in `visit'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/capybara-2.18.0/lib/capybara/dsl.rb:50:in `block (2 levels) in <module:DSL>'
/home/hudson/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/site_prism-2.11/lib/site_prism/page.rb:36:in `load'
Version that I am using:
Ruby: 2.4.0
Firefox: 52.6.0(This is required for my tests)
Geckodriver: v0.17.0
capybara: 2.18.0
selenium-webdriver: 3.4.0
Driver is set by this code:
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, :browser => :firefox)
end
When I run the same tests on Chrome or latest Firefox(with Geckodriver v0.20.0) everything works great. But I need to run these tests of Firefox 52. I have tried different combinations between Geckodriver and Selenium-webdriver but unsuccessfully so far.
I have used https://github.com/mozilla/geckodriver/tree/v0.17.0 documentation.
Related
I have a simple code and similar code for :chrome, :ie, :ff works fine.
require 'watir'
b = Watir::Browser.new :edge
My environment:
ruby 2.4
watir 6.10.3
selenium-webdriver 3.11
proper webdriver is downloaded and put into path (I matched the system version with the version of the driver)
As result I got error:
Selenium::WebDriver::Error::WebDriverError: unexpected response, code=500, content-type="text/plain"
Unknown error
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/common.rb:88:in `create_response'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/default.rb:104:in `request'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/common.rb:59:in `call'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/bridge.rb:164:in `execute'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/bridge.rb:97:in `create_session'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/edge/driver.rb:51:in `initialize'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/common/driver.rb:54:in `new'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/common/driver.rb:54:in `for'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver.rb:85:in `for'
from c:/Ruby24/lib/ruby/gems/2.4.0/gems/watir-6.10.3/lib/watir/browser.rb:48:in `initialize'
from (irb):19:in `new'
from (irb):19
from C:/Ruby24/bin/irb.cmd:19:in `<main>'
What's wrong?
UPDATE: This code works fine for EDGE at home, but fail at workstation. It seems some network or security configuration
I want to run my script on MAC Chrome. I performed following steps
Download latest chrome driver from http://chromedriver.storage.googleapis.com/index.html
Unzip the package and then copy the file to /usr/bin
On irb i excuted following steps
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome
It gives following error message
Net::ReadTimeout: Net::ReadTimeout
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1406:in `block in transport_request'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1403:in `catch'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1403:in `transport_request'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1376:in `request'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1369:in `block in request'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:852:in `start'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:1367:in `request'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/remote/http/default.rb:83:in `response_for'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/remote/http/default.rb:39:in `request'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/remote/bridge.rb:634:in `raw_execute'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/remote/bridge.rb:99:in `create_session'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/remote/bridge.rb:68:in `initialize'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/chrome/bridge.rb:29:in `initialize'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/common/driver.rb:37:in `new'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/common/driver.rb:37:in `for'
from /Users/vertis/.rvm/gems/ruby-1.9.3-p429/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver.rb:67:in `for'
from (irb):4
download latest version of chromedriver and keep it in usr/local/bin and run your code it will work because same thing works for me....if you want to see which version is running then go to your chromedriver and right click and open with terminal. it will show you the version so please keep this in mind that your version should be something 2.15.XXXXXX
and i am pretty sure it will work for you!
My system configurations Windows 7, IE8
when I try to open the firefox browser I got the following error can anyone help me how to resolve these.
C:\Users\khan>irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'watir-webdriver'
=> true
irb(main):003:0> e=Watir::Browser.new :firefox
NoMethodError: undefined method `ascii_only?' for {}:Hash
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/json_pure-1.4.3/lib/json/pure/generator.rb:393:in `to_json'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/multi_json-1.3.7/lib/multi_json/adapters/json_common.rb:11:in `dump'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/multi_json-1.3.7/lib/multi_json.rb:115:in `dump'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/common/json_helper.rb:23:in `json_dump'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/profile.rb:254:in `write_prefs'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/profile.rb:253:in `each'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/profile.rb:253:in `write_prefs'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/profile.rb:252:in `open'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/profile.rb:252:in `write_prefs'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/profile.rb:232:in `update_user_prefs_in'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/profile.rb:79:in `layout_on_disk'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/launcher.rb:58:in `create_profile'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/launcher.rb:34:in `launch'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/socket_lock.rb:20:in `locked'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/bridge.rb:20:in `initialize'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/common/driver.rb:31:in `new'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/common/driver.rb:31:in `for'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver.rb:67:in `for'
from D:/Ruby_1.8.7/lib/ruby/gems/1.8/gems/watir-webdriver-0.6.2/lib/watir-webdriver/browser.rb:46:in `initialize'
from (irb):3:in `new'
from (irb):3
from ♥:0irb(main):004:0>
Based on the exception, you are using an older version of selenium-webdriver and watir-webdriver. It is possible that there is an incompatibility between your selenium-webdriver gem and your Firefox version.
Therefore, I would suggest upgrading your gems:
gem install selenium-webdriver
gem install watir-webdriver
It might also be possible that one of the dependencies is also incompatible (eg json-pure where the exception occurs). You might want to trying updating everything.
gem update
You should try to update gem,I am not sure about it,but try once.
gem update --system
Just have a simple script to automate a firefox browser:
Just have a simple script to automate a firefox browser:
require 'rubygems'
require 'watir-webdriver'
# Initialize watir firefox browser
$browser = Watir::Browser.new :ff , :profile => 'default'
Leads to the following error which I havent been able to figure out. Is there a TCP port that is blocked or something?.I am using my office pc btw , the code works fine on my home pc.
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `initialize': getaddrinfo: No such
host is known. (SocketError)
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `open'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'
from C:/Ruby193/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
from C:/Ruby193/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `connect'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:744:in `start'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1284:in `request'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/remote/http/default.rb:76:in `response_for'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/remote/http/default.rb:38:in `request'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/remote/http/common.rb:40:in `call'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/remote/bridge.rb:598:in `raw_execute'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/remote/bridge.rb:92:in `create_session'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/remote/bridge.rb:68:in `initialize'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/firefox/bridge.rb:28:in `initialize'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/common/driver.rb:31:in `new'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver/common/driver.rb:31:in `for'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.22.2/lib/s
elenium/webdriver.rb:65:in `for'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir
-webdriver/browser.rb:35:in `initialize'
from sic_class.rb:8:in `new'
from sic_class.rb:8:in `<main>'
There is no proxy, I am using windows 7, watir webdriver 0.6.1 and firefox 13.01
if you want to install gems then the http_proxy environment variable must be set in ur PATH. But this causes the above problem with watir-webdriver, it worked for me after removing the http_proxy variable. It then uses the proxy settings in browser.
I have installed JRuby 1.6.7.2 (64bit), and the JDK 1.7.x (64-bit) on my Windows 7 machine. Right now I'm just trying to launch a browser (Firefox 13.0) using Watir but I keep getting an HTTP error that seems to be coming internally from JRuby + gems. I have installed the gems using the following commands:
jgem install watir-webdriver
jgem install rspec
jgem install capybara
jgem install page-object
jgem install bundler
jgem install jruby-jars
Here is the stacktrace error I get when I try to open a browser using Watir:
C:\Windows\System32>jirb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'watir-webdriver'
=> true
irb(main):003:0> b = Watir::Browser.start("http://www.google.com", :firefox)
[WARNING] MultiJson is using the default adapter (ok_json). We recommend loading
a different JSON library to improve performance.
ArgumentError: HTTP request path is empty
from C:/Ruby/jruby-1.6.7.2/lib/ruby/1.8/net/http.rb:1476:in `initialize'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/1.8/net/http.rb:1594:in `initialize'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/remote/http/default.rb:64:in `new_request_for'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/remote/http/default.rb:34:in `request'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/remote/http/default.rb:57:in `request'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/remote/bridge.rb:598:in `raw_execute'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/remote/bridge.rb:92:in `create_session'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/remote/bridge.rb:68:in `initialize'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/firefox/bridge.rb:28:in `initialize'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver/common/driver.rb:31:in `for'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/selenium-webdriver-2.2
2.2/lib/selenium/webdriver.rb:65:in `for'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/watir-webdriver-0.6.1/
lib/watir-webdriver/browser.rb:35:in `initialize'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/gems/1.8/gems/watir-webdriver-0.6.1/
lib/watir-webdriver/browser.rb:18:in `start'
from (irb):3:in `evaluate'
from org/jruby/RubyKernel.java:1083:in `eval'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/1.8/irb.rb:158:in `eval_input'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/1.8/irb.rb:271:in `signal_status'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/1.8/irb.rb:155:in `eval_input'
from org/jruby/RubyKernel.java:1410:in `loop'
from org/jruby/RubyKernel.java:1183:in `catch'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/1.8/irb.rb:154:in `eval_input'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/1.8/irb.rb:71:in `start'
from org/jruby/RubyKernel.java:1183:in `catch'
from C:/Ruby/jruby-1.6.7.2/lib/ruby/1.8/irb.rb:70:in `start'
from C:\Ruby\jruby-1.6.7.2\bin\jirb:13:in `(root)'irb(main):004:0>
I have the selenium webdrivers ie & chrome added to my classpath. When I execute this command with ie or chrome I get a similar HTTP error. Is this a fix I have to do manually to the gem files?
I had the same error with the watir-webdriver gem.
The problem were the http proxy settings and the solution was to add the no_proxy env before the code.
ENV['no_proxy'] = "127.0.0.1"
I hope that can help you!