Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to build remote Webdriver for Chrome

I am trying to run my Selenium tests against Chrome. When I initialize driver locally:

@driver = Selenium::WebDriver.for( :chrome )

Everything works fine (I already put Chrome binary on my PATH) But when I try to launch it remotely:

@driver = Selenium::WebDriver.for(:remote, :url => 'http://' + SELENIUM_HOST + port + webdriver_hub, :desired_capabilities => :chrome)

I get the following error

Selenium::WebDriver::Error::UnhandledError: The path to the chromedriver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromium/downloads/list (java.lang.IllegalStateException)

I am a bit confused there - how exactly should I set this system property? I found this code written in Java:

DesiredCapabilities caps = DesiredCapabilities.chrome();
caps.setJavascriptEnabled(true);
caps.setCapability("chrome.binary", "/path/to/where/chrome/is/installed/chrome.exe");
System.setProperty("webdriver.chrome.driver","/path/to/where/you/ve/put/chromedriver.exe");
ChromeDriver driver = new ChromeDriver(caps);

but my tests are written in Ruby. RubyBindings don't talk about this issue http://code.google.com/p/selenium/wiki/RubyBindings

like image 366
Yulia Avatar asked Aug 03 '11 02:08

Yulia


People also ask

Can we use RemoteWebDriver instead of WebDriver?

Selenium RemoteWebDriver : Difference between WebDriver and RemoteWebDriver. Selenium Webdriver is a tool used to execute automated test cases on various browsers. The object of the WebDriver is a browser. Selenium RemoteWebDriver implements the WebDriver interface to execute test cases.

Can we create object of RemoteWebDriver?

you can, but remote one will work for "normal" case as well as for grid case.

Does Selenium WebDriver work with Chrome?

Through WebDriver, Selenium supports all major browsers on the market such as Chrome/Chromium, Firefox, Internet Explorer, Edge, and Safari. Where possible, WebDriver drives the browser using the browser's built-in support for automation.


3 Answers

Actually the error message is slightly wrong. You don't have to set the system property, but the chromedriver executable needs to be available in the PATH on the remote machine (where the server is running).

If you want to specify the path as a property, you can do that when you launch the server, e.g.:

java -Dwebdriver.chrome.driver=/path/to/driver -jar selenium-server-standalone.jar
like image 132
jarib Avatar answered Oct 14 '22 19:10

jarib


You have to set path to your cromedriver.exe inside the code of the test. Its something like

System.setproperty();

in Java

I am also using Java based tests, so I cannot give you exact example for Ruby. But basically you have to tell your Ruby program where is the path to chromedriver.exe

like image 41
Pavel Janicek Avatar answered Oct 14 '22 19:10

Pavel Janicek


Okay, guys. With the help I could find the answer. Check it out.

That is how you set up the driver on your local machine:

    @driver = Selenium::WebDriver.for(:remote, :chrome :url => 'http://' + SELENIUM_HOST + port + webdriver_hub, :desired_capabilities => browser)

where

browser = ':chrome'
port = ':4444'
webdriver_hub = '/wd/hub'

On the remote machine running the server would be something like this

    java -jar selenium-server-standalone-2.2.0.jar -Dwebdriver.chrome.driver="path/to/where/you/put/chromedriver.exe"

After run your tests from the local machine.

Best of luck!

like image 1
Yulia Avatar answered Oct 14 '22 19:10

Yulia