Ruby webdriver doesn't navigate in Chrome - ruby

I have just finished setting up the latest versions of Ruby (Ruby 2.0.0-p451 (x64)) and Watir. I have downloaded both the selenium web driver gem and the watir webdriver gem, both installed successfully. I then got the Ruby dev kit, installed that and it installed fine. Lastly, I got the latest version (2.9) of chromedriver.exe and placed it in the bin directory for ruby.
I can start Chrome from a Watir script but I can't navigate to any URL. When Chrome opens a new instance it has one tab and in the URL all it says is "data:,", the page is completely blank. I have used examples and this one works with Firefox but not Chrome
require 'watir-webdriver'
b = Watir::Browser.new :chrome
b.goto 'bit.ly/watir-webdriver-demo'
b.text_field(:id => 'entry_0').set 'your name'
b.select_list(:id => 'entry_1').select 'Ruby'
b.select_list(:id => 'entry_1').selected? 'Ruby'
b.button(:name => 'submit').click
b.text.include? 'Thank you'
(that example came from http://watirwebdriver.com/)
If I remove ":chrome" from the end of the second line, Firefox opens and navigates to the URL as I'd expect, but can't get that to work in Chrome.
If I use the selenium-webdriver with Chrome I get the exact same result: Chrome opens, it has "data:," in the URL and doesn't navigate to the URL in the script.
I also tried this in the Ruby 1.9.3-p545 version of Ruby and I get the exact same result, so I uninstalled that and am now using the 2.0.0 version of Ruby.
How can I get my script to open chrome and navigate to a URL?

Related

How to configure env.rb to start portable chrome (instead of local installation) with Ruby, Selenium and LapisLazuli

Question:
For my Test Automation Suite I would like to know how to configure/setup my portable Chrome to run instead of the local installed Chrome.
Reason:
There is an issue with the application I'm trying to test and Chrome Version 55. Issue: Certain buttons are since this version not clickable and I want to bypass this for the time being by using an older Chrome version.
I use Ruby version 2.3.0p0 (2015-12-25 revision 53290)
And LapisLazuli as described on www.testautomation.info
The setup itself is working. The answer might be simple, but I did not manage to get this running in this combination.
I found information about selenium/Java, but I have no idea how to get that to work with my setup.
Selenium not starting portable chrome but local installation
I also found this website: https://leanpub.com/watirbook/read
And here they mentioned the following:
3 > require "selenium-webdriver"
4 => true
5
6 > Selenium::WebDriver::Chrome.path =
7 'C:\chrome\chrome.exe'
8 => "C:\\chrome\\chrome.exe"
So I tried that in irb and this worked
require 'lapis_lazuli'
include LapisLazuli
Selenium::WebDriver::Chrome.path = 'C:\chrome_portable_v53\chrome.exe'
browser :chrome
The portable chrome version was started. Now I only need to know how to place this in my env.rb file (I assume), which looks currently like this:
require 'lapis_lazuli'
require 'lapis_lazuli/cucumber'
LapisLazuli::WorldModule::Config.config_file = "config/config.yml"
World(LapisLazuli)
I think the following is answering the question. I've added require selenium-webdriver and that Chrome.path to the env.rb and this seems to work.
require 'lapis_lazuli'
require 'lapis_lazuli/cucumber'
require 'selenium-webdriver'
Selenium::WebDriver::Chrome.path = 'C:\chrome_portable_v53\chrome.exe'
LapisLazuli::WorldModule::Config.config_file = "config/config.yml"
World(LapisLazuli)

Webdriver Watir Ruby Chrome Versions

I want to test with different versions of Chrome. How can you point at a specific Chrome executable/version with Watir and Ruby?
To use a specific Chrome executable specify the Selenium::WebDriver::Chrome.path.
require 'watir'
# Note that the path includes the file directory and executable
Selenium::WebDriver::Chrome.path = 'C:/Program Files (x86)/Google/Chrome/Application/Chrome.exe'
browser = Watir::Browser.new :chrome

how to use geckodriver with watir webdriver

I ran a bundle update yesterday night and selenium-webdriver got updated to the latest version.
My watir-webdriver tests pointed to firefox are now broken.
The error message said to add geckodriver to the path. On my mac, I copied geckodriver to the /usr/bin and ran the tests again.
This is the error I am getting now
unable to connect to Mozilla geckodriver 127.0.0.1:4444 (Selenium::WebDriver::Error::WebDriverError)
The watir-webdriver documentation does not seem to be updated on how to do this?
Did anyone manage to fix this
There is no extra documentation because there is nothing extra to do with Watir. It's finding the geckodriver file , but can't run it. Check to make sure it is executable on your system.
If your test not only just stick to firefox, you can use chromedriver instead of geckodriver, which is much easy, as far as my experience goes.
1, Add gem watir to your gemfile.
2, Download file on this page https://sites.google.com/a/chromium.org/chromedriver/downloads, and copy chromedriver to /usr/bin path.
3, And then just run it:
browser = Watir::Browser.start(url)
html = Nokogiri::HTML.parse(browser.html)
browser.close
4, Also, you can use headless to start a virtual X screen to hide browser windows like this:
headless = Headless.new
headless.start
browser = Watir::Browser.start(url)
html = Nokogiri::HTML.parse(browser.html)
browser.close
headless.destroy

Watir Crawler is Stuck after Goto

First time messing with Watir.
browser = Watir::Browser.new
browser.goto 'google.com'
My firefox window pops up and stays stuck on a blank page. When I end the script in the command line, I get:
...ruby-1.9.3-p194/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/common/socket_poller.rb:95:insleep': Interrupt`
I've do have the selenium-webdriver gem (2.29) installed. My firefox version is 19.
I do not think selenium-webdriver supports Firefox 19. Try with Firefox 18.

How do I run Firefox browser headless with my Ruby script?

I need to be able to run my Ruby scripts with my Hudson builds but don't want a browser window attempting to open.
I tried:
batman:ETW cmiller$ ./createAccount.rb -b
but this did not work.
How can I run my Ruby scripts using FireWatir headless?
Running on Mac OSX
I'd suggest the usage of PhantomJS (http://phantomjs.org/download.html)
Add binaries to your path and run:
MEDBEDbs-iMac:~ medbedb$ irb
1.9.3p392 :001 > require 'watir-webdriver'
=> true
1.9.3p392 :002 > b = Watir::Browser.new :phantomjs
=> #<Watir::Browser:0x..fe670a70a449fe1ca url="about:blank" title="">
1.9.3p392 :003 > b.goto "www.google.com"
=> "http://www.google.md/"
1.9.3p392 :004 > b.url
=> "http://www.google.md/"
1.9.3p392 :005 > b.title
=> "Google"
1.9.3p392 :007 > b.text
=> "+Вы\nПоиск\nКартинки\nКарты\nPlay\nПочта\nДиск\nКалендарь\nЕщё\nВойти\n×\nОткрывай любимые сайты быстрее\nЗагрузить Google Chrome\n\nМолдoва\n\n \nРасширенный поиск\nЯзыковые инструменты\n\nGoogle.md предлагается на: Moldovenească\n\nРекламные программыВсё о GoogleGoogle.com\n© 2013 - Правила и принципы"
I would look at using Watir-Webdriver instead of just plain Watir or Fire-watir. Especially since the only way to work with newer versions of firefox is going to be via Watir-Webdriver.
There's an earlier SO question where the answer covers just this sort of thing, so I'd suggest trying what is described there there first. Can I use Watir to scrape data from a website on a linux server without monitor?
Also since I now know you are using Mac OS, the advice in this thread from the webdriver google group might be more applicable to you
Look at http://watirmelon.com/tag/headless/.
I have followed http://watirwebdriver.com/headless/ on Linux that works for me. In above link the tutorial is intended for Mac
Here is extract of the links, how to use headless browser:
require 'watir-webdriver'
require 'headless'
Now start headless and browser
headless = Headless.new
headless.start
b = Watir::Browser.start 'www.google.com' puts b.title
b.close headless.destroy
Your browser should run headless.
The browser is opening the window as part of its normal operation and behavior.
You could look into using Mechanize, which supplies the ability to navigate a site. It isn't a browser, but uses Nokogiri underneath to let you grab DOM information and manipulate forms, submit them, and retrieve any resulting page changes. Mechanize doesn't support parsing/executing Javascript though, which puts you back into WATIR's realm.

Resources