Automating Chrome on Windows with JavaScript using Selenium's WebDriverJS

To test my web application, I'm using web browser automation. Getting this set up on Windows took a bit of trial and error, so I've documented the process for future reference.

Here's the list of tools you'll need to get up and running:

Installing the tools

Selenium runs on Java, so if you don't it installed yet, download it from http://www.java.com/en/download/manual.jsp.

Check that Java is installed, by running the following from a command prompt:

c:\>java -version

Here's what I get:

C:\Users\andrew>java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

Next, you need to get Selenium. It's enough to simply download the "selenium-server-standalone" jar file from https://code.google.com/p/selenium/downloads/list. At the time of writing, the latest version was selenium-server-standalone-2.37.0.jar.

To allow Selenium to control Chrome, you'll need the "chromedriver", available from here: http://chromedriver.storage.googleapis.com/index.html. At the time of writing, the latest version was 2.7.

Copy the selenium-server-standalone jar file and chromedriver.exe into your project's directory. Open a new command prompt, change to your project directory and then start Selenium with the following command:

c:\myproject>java -jar selenium-server-standalone-2.35.0.jar -Dwebdriver.chrome.driver=chromedriver.exe

The server can be stopped by pressing Ctrl+C.

To run JavaScript-based tests, you'll need to have NodeJS installed. Download the installer from http://nodejs.org/.

Once NodeJS is installed, you can use the Node Package Manager (npm) to install the selenium-webdriver library:

c:\myproject>npm install selenium-webdriver

A basic browser automation script

You can now create JavaScript files that will automate Chrome. Here's a simple script, test.js.

var webdriver = require("selenium-webdriver");

function createDriver() {
    var driver = new webdriver.Builder()
        .usingServer('http://localhost:4444/wd/hub')
        .withCapabilities(webdriver.Capabilities.chrome())
        .build();
    driver.manage().timeouts().setScriptTimeout(10000);
    return driver;
}

var driver = createDriver();
driver.get("http://www.google.com");

driver.getTitle().then(function (title) {
    console.log(title);
});

driver.quit();

Make sure the Selenium server is running. Then run the script at the command prompt, using node:

c:\myproject>node test.js

You will see Chrome open and load the Google home page. It will then quit, and at the command prompt you'll see the page title printed.

Learning more

The WebDriverJS library is documented here: https://code.google.com/p/selenium/wiki/WebDriverJs.

The library makes great use of "Promises" to handle the asynchronous nature of browser automation. So it's essential to read the Understanding the API section.

Would you like access to the sample code repository?

Subscribe to my web development mailing list.

No spam, just occasional web development tips, posts and sample code. Unsubscribe at any time.

Comments
blog comments powered by Disqus