Trouble with Selenium and ChromeDriver - ruby

I'm trying to get Selenium working, but I can't seem to figure it out. I've installed the proper Ruby gem, and am trying to execute this code.
require "selenium-webdriver"
driver = Selenium::WebDriver.for :chrome
driver.navigate.to "http://google.com"
element = driver.find_element(:name, 'q')
element.send_keys "Hello WebDriver!"
element.submit
puts driver.title
driver.quit
I'm fairly certain my issue is that I haven't connected the ChromeDriver correctly. How do I link Chrome driver in order to get this to work? It says I need to place it on my PATH. Can someone explain this?
Here is what I downloaded.
Also, here is the error I'm getting:
in `executable_path': Unable to find the chromedriver executable.

There is a Selenium::WebDriver::Chrome.driver_path= method that allows specifying of the chromedriver executable:
# Specify the driver path
Selenium::WebDriver::Chrome.driver_path = "path/to/chromedriver.exe"
# now instantiate chrome driver
driver = Selenium::WebDriver.for :chrome
driver.navigate.to "http://google.com"
element = driver.find_element(:name, 'q')
element.send_keys "Hello WebDriver!"
element.submit
puts driver.title
driver.quit

Place chrome driver depends on your operating system, check this link:
OS Expected Location of Chrome
Linux /usr/bin/google-chrome1
Mac /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
Windows XP %HOMEPATH%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe
Windows Vista C:\Users\%USERNAME%\AppData\Local\Google\Chrome\Application\chrome.exe

Unable to find the chromedriver executable :
We get this when system is not able to locate chromedriver. We can help system find it by setting environment variable "webdriver.chrome.driver"
If you are running unix/linux use
export webdriver.chrome.driver=<path_where_binary_is_present>
If running on windows :
Go to System Advanced Environment Variables. Add an entry with name webdriver.chrome.driver and value set to path of binary
We can also set this location from program also. Like in java
System.setProperty("webdriver.chrome.driver", ""
Do any one of this and this error should go away

Related

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

Selenium Webdriver doesn't open Firefox

When I start a script with Selenium-Webdriver, the Firefox window that I expect to open never opens. This code used to work, but no longer does:
require 'selenium-webdriver'
p "DEFINING `driver`"
driver = Selenium::WebDriver.for :firefox
p "OPENING GOOGLE"
driver.navigate.to "http://google.com"
element = driver.find_element(:name, 'q')
element.send_keys "Selenium Tutorials"
element.submit
driver.quit
When I run it, "DEFINING `driver`" prints to the console, but the script just hangs there.
The only major thing I did in the past 48 hours was run a virus scan.
You should update your Selenium-Webdriver gem to version 2.45.0

Ruby webdriver doesn't navigate in Chrome

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?

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