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.
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 upgraded my VM environment with the following versions:
cucumber 2.4.0
selenium-webdriver 3.7.0
ruby 2.4.1
chrome 62.0.3202.94
ChromeDriver 2.33.506092
my env.rb is configured with the following attributes:
$browser = Selenium::WebDriver.for :chrome, options: options
$browser.manage.window.maximize
I'm trying to run any test and i'm getting the following error:
undefined method `as_json' for nil:NilClass (NoMethodError)
/home/glasner/.rvm/gems/ruby-2.4.1/gems/selenium-webdriver-3.7.0/lib/selenium/webdriver/chrome/driver.rb:111:in `create_capabilities'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/selenium-webdriver-3.7.0/lib/selenium/webdriver/chrome/driver.rb:33:in `initialize'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/selenium-webdriver-3.7.0/lib/selenium/webdriver/common/driver.rb:44:in `new'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/selenium-webdriver-3.7.0/lib/selenium/webdriver/common/driver.rb:44:in `for'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/selenium-webdriver-3.7.0/lib/selenium/webdriver.rb:84:in `for'
/home/glasner/repos/portal_automation/features/support/env.rb:193:in `block in <top (required)>'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/retriable-3.1.1/lib/retriable.rb:61:in `block in retriable'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/retriable-3.1.1/lib/retriable.rb:57:in `times'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/retriable-3.1.1/lib/retriable.rb:57:in `retriable'
/home/glasner/repos/portal_automation/features/support/env.rb:189:in `<top (required)>'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/rb_support/rb_language.rb:96:in `load'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/rb_support/rb_language.rb:96:in `load_code_file'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:142:in `load_file'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:84:in `block in load_files!'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:83:in `each'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:83:in `load_files!'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/runtime.rb:253:in `load_step_definitions'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/runtime.rb:61:in `run!'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/lib/cucumber/cli/main.rb:32:in `execute!'
/home/glasner/.rvm/gems/ruby-2.4.1/gems/cucumber-2.4.0/bin/cucumber:8:in `<top (required)>'
/home/glasner/.rvm/gems/ruby-2.4.1/bin/cucumber:23:in `load'
/home/glasner/.rvm/gems/ruby-2.4.1/bin/cucumber:23:in `<main>'
/home/glasner/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `eval'
/home/glasner/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `<main>'
I tried using different version of all of the above but it seems that the problem is that new "options" configurations for the chrome browser.
Which option should I use in order to solve that problem?
Thank you! :)
UPDATE:
Found the answer to the problem.
I had a method for running the tests in a headless mode that initialize the options variable, but that wasn't good enough.
options variable should be initialized before we configure the driver, as such:
options = Selenium::WebDriver::Chrome::Options.new
$browser = Selenium::WebDriver.for :chrome, options: options
$browser.manage.window.maximize
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!
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!
Good day,
I have a simply Rake file:
require 'mirage/client'
namespace :mock_server do
desc "Checks to see if the mock server is currently running"
task :running? do
puts Mirage::Client.new.running? ? 'Yep' : 'Nope'
end
end
If Mirage is running this works fine, however if Mirage is not it fails with:
$ rake --trace -f test.rb.txt mock_server:running?
** Invoke mock_server:running? (first_time)
** Execute mock_server:running?
rake aborted!
Operation not permitted - connect(2)
/usr/lib/ruby/1.8/net/http.rb:560:in `initialize'
/usr/lib/ruby/1.8/net/http.rb:560:in `open'
/usr/lib/ruby/1.8/net/http.rb:560:in `connect'
/usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
/usr/lib/ruby/1.8/timeout.rb:93:in `timeout'
/usr/lib/ruby/1.8/net/http.rb:560:in `connect'
/usr/lib/ruby/1.8/net/http.rb:553:in `do_start'
/usr/lib/ruby/1.8/net/http.rb:542:in `start'
/usr/lib/ruby/1.8/net/http.rb:1035:in `request'
/usr/lib/ruby/gems/1.8/gems/mirage-2.0.16/lib/mirage/client/web.rb:36:in `http_get'
/usr/lib/ruby/gems/1.8/gems/mirage-2.0.16/lib/mirage/client.rb:135:in `running?'
/cygdrive/c/Code/SocialMedia/tests/features/test.rb.txt:6
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/bin/rake:33
/usr/bin/rake:19:in `load'
/usr/bin/rake:19
Tasks: TOP => mock_server:running?
I'm running ruby 1.8.7 installed using the Cygwin installer, mirage 2.0.16 via gem on Windows 7. Do you know of any reason why this is failing?
Cheers,
Mlk
It appears to be the version of Ruby. Tried with Ruby 1.9 and all is good with the world.