Setting Up Selenium Grid Hub and Nodes for Java Tests

Selenium Grid is a powerful tool that allows you to run your automated tests across multiple machines and browsers in parallel. Whether you're testing a web application on different browser versions or running your test suite faster by distributing the load, Selenium Grid is an essential part of scaling Java-based Selenium testing.

In this blog post, we'll walk through how to set up a Selenium Grid Hub and Nodes, and how to integrate them into your Java test suite using Selenium WebDriver.


What Is Selenium Grid?

Selenium Grid allows for distributed test execution. It consists of:

  • Hub: A central point that receives test requests and distributes them to registered nodes.
  • Nodes: Machines (or containers) that execute tests on specific browsers and operating systems.
  • This setup enables you to run tests concurrently across different environments, making it easier to catch browser-specific issues.


Prerequisites

Before starting, make sure you have:

  • Java and Maven installed
  • Latest version of Selenium Server (Grid)
  • Browsers like Chrome or Firefox installed on nodes
  • WebDriver executables (e.g., ChromeDriver, GeckoDriver)

You can download the Selenium standalone JAR or use Docker (recommended for modern setups).


Method 1: Setting Up Using JAR Files

Step 1: Download Selenium Grid

Download the latest Selenium server jar from https://www.selenium.dev/downloads.


Step 2: Start the Hub

In your terminal or command prompt, run:

bash

java -jar selenium-server-<version>.jar hub

This will start the hub on port 4444 by default. You can access the Grid console at:

http://localhost:4444/grid/console


Step 3: Start a Node

On the same or different machine, run:

bash

java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444

This node will register with the hub and report its capabilities (browser, version, platform).


Method 2: Setting Up Using Docker (Preferred)

Using Docker Compose is a modern and cleaner way to set up Selenium Grid.

Step 1: Create a docker-compose.yml file:

yaml

version: "3"

services:

  selenium-hub:

    image: selenium/hub:latest

    ports:

      - "4444:4444"

  

  chrome:

    image: selenium/node-chrome:latest

    depends_on:

      - selenium-hub

    environment:

      - SE_EVENT_BUS_HOST=selenium-hub

      - SE_EVENT_BUS_PUBLISH_PORT=4442

      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443


  firefox:

    image: selenium/node-firefox:latest

    depends_on:

      - selenium-hub

    environment:

      - SE_EVENT_BUS_HOST=selenium-hub

      - SE_EVENT_BUS_PUBLISH_PORT=4442

      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443


Step 2: Run the Grid

bash

docker-compose up -d

This will bring up the hub and register both Chrome and Firefox nodes automatically.


Writing Java Tests for Selenium Grid

In your Java code, you’ll need to use RemoteWebDriver instead of the local WebDriver:


java


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.openqa.selenium.remote.RemoteWebDriver;


import java.net.URL;


public class GridTest {

    public static void main(String[] args) throws Exception {

        DesiredCapabilities capabilities = new DesiredCapabilities();

        capabilities.setBrowserName("chrome");


        WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

        driver.get("https://example.com");

        System.out.println("Title: " + driver.getTitle());

        driver.quit();

    }

}


Conclusion

Setting up Selenium Grid is a crucial step for scaling your Java test automation. It not only saves time by running tests in parallel but also helps ensure compatibility across browsers and platforms. Whether you opt for a JAR-based or Docker-based setup, integrating Selenium Grid with your Java project is straightforward and highly beneficial for serious test automation efforts.

Learn Selenium with Java  Course  in Hyderabad
Read More: Cross-Browser Testing Using Selenium Grid with Java

Visit Quality Thought Training Institute Hyderabad
Get Direction

Comments

Popular posts from this blog

Tosca vs Selenium: Which One to Choose?

Flask API Optimization: Using Content Delivery Networks (CDNs)

Using ID and Name Locators in Selenium Python