Docker Selenium Grid in Selenium Java - Build an Automation Script
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; import java.time.Duration; public class GoogleSearchGridTest { public static void main(String[] args) throws Exception { // URL of the Selenium Grid Hub running in Docker URL gridUrl = new URL("http://localhost:4444/wd/hub"); // Desired capabilities for Chrome browser DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setBrowserName("chrome"); // Create RemoteWebDriver instance to connect to Grid WebDriver driver = new RemoteWebDriver(gridUrl, capabilities); try { // Navigate to Google driver.get("https://www.google.com"); // Wait for the search box to be visible WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement searchBox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("q"))); // Enter search text String searchTerm = "Selenium Grid Docker"; searchBox.sendKeys(searchTerm); // Submit the search form searchBox.submit(); // Wait for the title to contain the search term wait.until(ExpectedConditions.titleContains(searchTerm)); // Assertion: verify title contains search term if (driver.getTitle().contains(searchTerm)) { System.out.println("Test Passed: Title contains search term."); } else { System.out.println("Test Failed: Title does not contain search term."); } } finally { // Close the browser session driver.quit(); } } }
This Java program uses Selenium WebDriver to connect to a Selenium Grid Hub running in Docker at http://localhost:4444/wd/hub. It sets the desired browser to Chrome.
The test navigates to Google, waits explicitly for the search input box to appear, enters the search term "Selenium Grid Docker", and submits the form.
It then waits until the page title contains the search term, which confirms the search results loaded correctly.
Finally, it asserts the page title contains the search term and prints the test result. The WebDriver session is closed in a finally block to ensure cleanup.
This approach uses explicit waits and proper locator strategies, following best practices for Selenium Grid tests.
Now add data-driven testing with 3 different search terms: 'Selenium Grid Docker', 'Docker containers', 'RemoteWebDriver Java'