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
Related
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)
I am compiling a Ruby script as a test to run independent of needing any dependencies, there are two lines of code that are compiled with OCRA --windows abc.rb
The file does not run on other computers, and I cannot discover why. Any suggestions greatly appreciated. Here are the two lines:
require 'watir-webdriver'
#browser = Watir::Browser.new
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
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?
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.