Selenium Grid Getting Started Guide (Plus 2 Must Use Helper Tools)

Selenium Grid Getting Started Guide (Plus 2 Must Use Helper Tools)

Selenium Grid Getting Started Hub and Node Setup

Before setting up a Selenium grid you need to make sure you have Java installed and configured in your computer’s environment path. If you don’t, here are some step by step instructions to get your machine configured:


Here’s the deal:

Why use a Selenium Grid

Using a Selenium grid allows you to save time by spreading your test across multiple machines.

This means you can run your test in parallel, which reduces the amount of total time to run your full automation test suite.

It’s also great if you need to run against multiple browser versions like IE 9 and IE 10 by allowing the hub to automatically manage that for you.

Selenium Grid: What is a Hub?

The hub is the main command center for managing which machines your selenium test will run on. This is where you can see a list of all the available nodes currently running in your grid environment.

When you run a Selenium test and pass it some remote web driver desired capabilities parameters, it goes to the hub and finds an available node that matches the criteria. Once it finds a machine that matches, say, a browser version you want to run against, the hub reroutes your script to the desired node.

So, now let’s get your hub up and running…

Configure the Hub

  1. Download Selenium Server


  1. Start the command prompt and navigate to the location in which you placed the Selenium server jar file.
  2. Enter:(FYI: your version number may be different than mine)
    java –jar selenium-server-standalone-2.43.1.jar –role hub
  3. Your screen should now look something like this:


Basically, what happened is that a jetty web server started and is now listening on a port – in this case, port 4444 (FYI –This port number can be changed by passing the –port parameter followed by the port number you want to use).

  1. Now open a browser and navigate to http://localhost:4444/grid/console
  2. If everything is working, the website should come up and you should see something like this:


Next, we need to set up some node machines.


Selenium Grid what is a Node

A node is a machine that you register with your hub. By registering with the hub, the hub now knows about the node and any configuration information you used when you registered the node.

Setup selenium grid nodes

  1. Just like with the hub machine, we need to also the Download Selenium Server on all our node machines.
  2. Once you have the Selenium-server jar file on the node machine, open up a cmd prompt and navigate to it.
  3. Enter:


java –jar selenium-server-standalone-2.43.1.jar –role node –hub http://hubIP:4444/grid/register

  1. If everything works, you should now see the IP address of the node you just started and registered in the hub console view:


Cool! That’s all you need to do get a Selenium Grid up and running. I also spoke Justin Ison a senior software engineer at Microsoft that gave some tips on how to create a mobile testing grid that you should check out.

That’s not all…Here are a few helper tools folks managing Selenium grids recommend.

Selenium Grid Extras

I’ve also started using selenium grid extras developed by Dima Kovalenko which is a project that combines a lot of little scripts that improve the stability of a Selenium grid into a single management tool called Selenium-Grid-Extras. It has a lot of cool features built into in like recording a video as the test is running and saving that video.

But the overall idea behind it is to kind of take away some of the complexities that come with managing the Grid. 

The best part?

Selenium Grid Extra Features

Here are some of the other features you get by using Selenium Grid Extras vs Selenium Grid alone:

  • Ability to control individual grid nodes, the following is an incomplete list of OS level tasks:
    • Killing any browser instance by name
    • Stopping any Process by PID
    • Moving mouse to a specific location
    • Get Memory usage and disk statistics
  • Automatically upgrade WebDriver binaries
  • Restart node after a set number of test executions
  • Central storage of configurations for all nodes on the HUB server
  • Screenshots at the OS level
  • And much more.

Selenium Grid Docker –  Zalenium

You might be asking is there any way you can create or use a Selenium Grid Docker setup? If so you are in luck.

It can be frustrating and time-consuming to keep everything up to date and running smoothly once you get you Selenium Grid up and running.

Enter Zalenium.

Zalenium is a flexible and scalable container based Selenium Grid with video recording, live preview, basic auth & dashboard.

It gets harder if you decide to scale up to handle more and more automated tests.If this is you check out my post on What is Zalenium? Docker based Selenium Grid

Running Selenium Grid in Jenkins

If you’re looking on getting your Selenium Grid deployment on a Jenkins cluster to check out this Selenium Jenkins plugin.

Moving from Selenium Grid to Cloud-Based Grid Provider

Many folks have found that to get the coverage they need against all the devices and operating systems they have to use a cloud-based grid provider. There are many option Sauce Labs being my favorite.

But if you are looking to do this check out my interview with Anshul Sharma for potential pitfalls you can avoid:

23comments
Akram - June 17, 2015

Hi Joe,

Could you review VisGrid-Selenium Grid UI?

http://www.codoid.com/products/view/2/30

Reply
    Joe Colantonio - July 2, 2015

    Hi Akram – thanks for the suggestion. i added to my future post blog ideas list

    Reply
Isha pinjarkar - August 10, 2015

HI Joe,

Nicely explained Thank you :)

Reply
    Joe Colantonio - August 11, 2015

    Thanks Isha – let me know if there are any other Selenium topics you want me to cover. Cheer~Joe

    Reply
jagadeesh - May 16, 2016

Hi,

Could you please let me know how selenium grid works. I mean i’m not providing any type of credentials anywhere(in grid or hub)

Is this security issue in selenium>?

Reply
sivakrishna - May 25, 2016

Hi Joe,

Is it possible to setup hub and node in the same machine.
Expecting early response from you.

Thanks&Regards,
SivaKrishna.M

Reply
    Joe Colantonio - May 26, 2016

    Yes. You just start up the host and node on same machine and it will work.

    Reply
Jason Stevenson - May 25, 2016

Hi Joe,

I see a lot of ‘Session time-out’ issues when running my tests against the hub.

Anything that I might be missing out on, in the set up?

Cheers,
Jason

Reply
    Joe Colantonio - May 28, 2016

    Hi Jason – does using the nodeTimeout parameter help? For example:

    java -jar selenium-server-standalone-2.25.0.jar -port 4444 -role hub
    -nodeTimeout 600
    
    Reply
Kanchan Kulkarni - May 26, 2016

Thanks!! its working.

Reply
sindhu - October 13, 2016

Hi joe,
how to kill this “java -jar selenium-server-standalone-2.53.1.jar” after 30 seconds automatically in console

Reply
    Joe Colantonio - October 13, 2016

    Why after 30 seconds? You could kill it using taskkill /f /im but not sure how to time it every 30 seconds

    Reply
Ramesh - February 1, 2017

Hi Joe,
Could you please help me in TestNG setup with Hybrid Framework( Keyword+DataDriven combination Framework)?
Thanks
Ramesh

Reply
Harish Polanki - March 10, 2017

Thank u very much..nicely explained with commands..

Reply
Nagendra - June 23, 2017

I am trying to run on Grid. I am getting error recently .

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: ‘2.44.0’, revision: ’76d78cf323ce037c5f92db6c1bba601c2ac43ad8′, time: ‘2014-10-23 13:11:40’
System info: host: ‘VDAASW708030’, ip: ‘30.138.168.129’, os.name: ‘Windows 7’, os.arch: ‘amd64’, os.version: ‘6.1’, java.version: ‘1.8.0_45’
Driver info: driver.version: Driver

Reply
Nawaz - February 6, 2018

Hi Joe,

can you explain the below code, as i saw this in one of the youtube videos that i was referring for grid concepts.

java -Dwebdriver.chrome.driver=”E:/Selenium_Needables/chromedriver_win32/chromedriver.exe” -jar selenium-server-standalone-3.9.0.jar -role node -hub http://192.168.1.128:4444/grid/register

Reply
Seshmi - February 8, 2018

Hi Joe,

While i m registering the hub on my local machine its getting an error that Port 4444 is busy,pleas choose a free port for the hub.
Can you please explain how to choose different port for registering the hub.I am unable to do this.

Thanks

Reply
    Joe Colantonio - February 8, 2018

    Seshmi the default port number can be changed by passing the –port parameter followed by the port number you want to use. For example when you start the hub again just add the -port at the end like this: java –jar selenium-server-standalone-2.43.1.jar –role hub -port 4455 <--You can choose what ever port number you want to use here. Make sense?

    Reply
Thirthaprasad HD - March 1, 2018

Hi Joe,

How can we run the multiple nodes at a time? Example I want to execute my script in different machines (lets say 20 Machines).
Please help us on this.

Reply
    Joe Colantonio - March 28, 2018

    Yes you just need to install the node on your 20 machines and point back to you Hub IP and it will connect to all available nodes

    Reply
anuradha - March 20, 2018

hi , i created hub and node successfully and executed selenium tests in node by providing ip address.
But my challenge is i want to execute tests in node in headless mode.
Can anyone help how to do that.

Note: i am able to execute tests in headless in my local.

Reply
Click here to add a comment

Leave a comment: