Introduction
Selenium WebDriver is one of the most widely used tools for automating web application testing. When working on real-time automation projects, testers need more than Selenium commands and Java programming. They also need an efficient way to manage dependencies, organise project files, execute test cases, and maintain automation frameworks.
This is where Apache Maven becomes important.
Maven is a build automation and project management tool used extensively in Java development. It simplifies the management of Selenium libraries, testing frameworks, reporting tools, and other dependencies. Instead of manually downloading and configuring JAR files, testers can declare the required libraries in a configuration file called pom.xml.
In this guide, we will explore how to integrate Selenium WebDriver with Maven and create a basic Java automation testing project.
1. What Is Maven?
Apache Maven is a Java-based build and dependency management tool. It helps developers and automation testers manage project configurations and dependencies in a consistent manner.
Some important Maven features include:
Dependency management: Downloads and manages Selenium, TestNG, JUnit and other libraries.
Standard project structure: Organises source code, test cases and resources.
Build automation: Supports compilation, testing and packaging.
Plugin integration: Provides plugins for test execution, reporting and other build activities.
Reproducible builds: Helps teams use consistent project configurations.
Maven uses an XML configuration file called pom.xml, where project details, dependencies and plugins are defined.
2. Why Use Maven with Selenium?
A basic Selenium Java project can work with manually downloaded JAR files. However, managing multiple libraries manually becomes difficult as the automation framework grows.
Maven makes the process easier.
| Without Maven | With Maven |
|---|---|
| Download JAR files manually | Dependencies downloaded automatically |
| Configure libraries individually | Manage libraries centrally |
| Maintain complex project structures | Follow standard project structure |
| Update dependencies manually | Change dependency versions in pom.xml |
| More difficult team collaboration | Easier project sharing and consistency |
For professional automation testing, Maven is particularly useful when Selenium is integrated with TestNG, JUnit, Apache POI, ExtentReports and CI/CD tools such as Jenkins.
3. Prerequisites for Selenium Maven Integration
Before creating the project, install the following tools:
Java Development Kit (JDK): Install a supported JDK version and configure
JAVA_HOME.IDE: Eclipse or IntelliJ IDEA.
Apache Maven: Use the Maven installation bundled with your IDE or install Maven separately.
Browser: Google Chrome, Firefox or Microsoft Edge.
Selenium WebDriver: Managed through Maven dependencies.
You should also understand basic Java programming concepts, including classes, objects, methods and exception handling.
Modern Selenium 4 releases include Selenium Manager, which can automatically manage browser drivers in many standard configurations. This reduces the need for manual driver downloads.
4. Create a Selenium Maven Project in Eclipse
Follow these steps to create a Maven project.
Step 1: Open Eclipse
Launch Eclipse and select your preferred workspace.
Step 2: Create a Maven project
Navigate to:
File → New → Maven Project
Select the option to create a simple project or use the appropriate archetype.
Step 3: Enter project details
For example:
Group ID:
com.palium.automationArtifact ID:
selenium-maven-projectVersion:
1.0-SNAPSHOTPackaging:
jar
Click Finish.
Step 4: Verify the project structure
A standard Maven project follows this structure:
selenium-maven-project
│
├── pom.xml
│
└── src
├── main
│ └── java
│
└── test
├── java
└── resourcesFor a test-focused Selenium project, most test classes will be stored under src/test/java.
Configuration files, test data and suite XML files can be stored under src/test/resources.
5. Add Selenium Dependency in pom.xml
The pom.xml file is the heart of a Maven project.
Open pom.xml and add the Selenium Java dependency inside the dependencies section.
The following is an example using Selenium Java version 4.38.0. Always check the current stable release and compatibility requirements before using a version in a new project.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.palium.automation</groupId>
<artifactId>selenium-maven-project</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<selenium.version>4.38.0</selenium.version>
<testng.version>7.11.0</testng.version>
</properties>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.1</version>
<configuration>
<release>17</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.4</version>
</plugin>
</plugins>
</build>
</project>The example uses Java 17. If you use another JDK version, update the compiler configuration and verify compatibility with your selected dependencies.
After saving the file, right-click the project and select:
Maven → Update Project
Maven will download the required libraries from the configured repositories.
6. Create Your First Selenium Test Using TestNG
Once the dependencies have been downloaded, create a Java test class under:
src/test/java
Create a class named GoogleSearchTest.java.
package com.palium.automation;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.testng.annotations.Test;
import org.testng.annotations.AfterMethod;
import java.time.Duration;
public class GoogleSearchTest {
WebDriver driver;
@Test
public void searchTest() {
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.google.com");
WebDriverWait wait = new WebDriverWait(
driver, Duration.ofSeconds(10)
);
WebElement searchBox = wait.until(
ExpectedConditions.visibilityOfElementLocated(
By.name("q")
)
);
searchBox.sendKeys("Selenium with Java");
searchBox.submit();
wait.until(
ExpectedConditions.titleContains("Selenium")
);
}
@AfterMethod
public void closeBrowser() {
if (driver != null) {
driver.quit();
}
}
}This example demonstrates how Maven-managed Selenium and TestNG dependencies can be used together.
The test launches Chrome, opens Google, enters a search term and waits for the page title to contain the expected text.
Website layouts and behaviour can change, so use a suitable test application and stable locators when developing production automation scripts.
7. Execute Selenium Tests Using Maven Commands
Maven provides several commands for managing the automation project.
| Maven Command | Purpose |
|---|---|
mvn clean | Removes the previous build output |
mvn compile | Compiles main source code |
mvn test | Runs tests configured for the Maven test lifecycle |
mvn clean test | Cleans the project and executes tests |
mvn package | Executes preceding lifecycle phases and packages the project |
mvn install | Builds and installs the project artifact in the local repository |
To run your Selenium TestNG tests from the project directory, execute:
mvn clean testThe Maven Surefire Plugin runs test classes according to its naming conventions and configuration.
If you want to execute a specific TestNG suite XML file, configure Surefire explicitly:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.4</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>
src/test/resources/testng.xml
</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>The suite file must exist at the specified location. It is not automatically selected merely because TestNG is included as a dependency.
8. Integrating Maven with a Selenium Automation Framework
For a real-time project, testers generally create a structured automation framework rather than keeping all scripts in one Java class.
A sample structure is:
selenium-maven-project
│
├── pom.xml
│
└── src
├── main
│ └── java
│ ├── pages
│ ├── utilities
│ └── base
│
└── test
├── java
│ ├── tests
│ └── listeners
│
└── resources
├── testdata
└── testng.xmlA professional Selenium framework may include:
Page Object Model (POM)
TestNG or JUnit
Explicit waits
Data-driven testing
Apache POI for Excel test data
Logging and reporting
Screenshot capture on failure
Configuration management
Cross-browser execution
Git and GitHub integration
Jenkins-based continuous integration
Maven makes it easier to add and maintain the libraries required for these features.
9. Common Problems During Selenium Maven Integration
Problem 1: Maven dependencies are not downloaded
Check your internet connection, repository access and Maven configuration. In Eclipse, use Maven Update Project and check the console for dependency-resolution errors.
Problem 2: Java version mismatch
Verify that the JDK configured in your IDE matches the compiler version declared in pom.xml.
Problem 3: Browser driver errors
Use a compatible browser version and a supported Selenium release. Selenium Manager can handle many standard driver-management scenarios, but network restrictions and unusual browser configurations may require additional setup.
Problem 4: Tests are not executing
Verify that the test classes are under src/test/java, that their names match Surefire discovery conventions, and that the TestNG provider and suite configuration are correct.
Problem 5: Build succeeds but browser tests fail
Check browser availability, application accessibility, locators, synchronization and environment-specific settings.
10. Why Selenium with Maven Is Important for Automation Testers
Knowledge of Selenium WebDriver alone is not sufficient for developing and maintaining enterprise-level automation solutions.
Employers expect automation testers to understand project organisation, dependency management, test execution and framework development.
Selenium with Maven is particularly useful for:
Building scalable Java automation frameworks.
Managing multiple testing libraries.
Running test suites consistently.
Integrating automation with Jenkins.
Supporting team-based development.
Maintaining automation projects over time.
It is an important skill for aspiring Automation Test Engineers and Software Development Engineers in Test (SDETs).
11. Learn Selenium with Java at Palium Skills
Palium Skills offers practical Selenium Automation Testing training designed for freshers, manual testers, working professionals and individuals planning to enter software testing.
The training covers Selenium WebDriver with Java, Maven integration, TestNG, Page Object Model, XPath, CSS selectors, waits, data-driven testing, automation framework development and practical project implementation.
Training options include:
Classroom training at South Kolkata and Salt Lake centres.
Instructor-led live online sessions for learners across India.
Hands-on automation exercises.
Practical framework development.
Real-time project-oriented learning.
Learners can also explore related training in Selenium with Python, Playwright with Java, Playwright with Python and API automation testing.
Contact Palium Skills
Website: www.paliumskills.com
Call: 8420594969 / 7044871915
WhatsApp: 9903130500
Email: info@paliumskills.com
South Kolkata Centre: 1st Floor, Sheeba Bhavan, 1/22 Poddar Nagar, Near South City Mall, Kolkata – 700068.
Salt Lake Centre: 5th Floor, RDB Boulevard, Block GP, Salt Lake Electronic Complex, Kolkata – 700091.
Contact Palium Skills to enquire about Selenium with Java classroom and live online training.
Frequently Asked Questions (FAQs)
1. What is Maven in Selenium?
Maven is a Java build and dependency management tool used to manage Selenium libraries, testing frameworks and project configurations.
2. Why is Maven used with Selenium WebDriver?
Maven simplifies dependency management, project organisation, test execution and integration with tools such as TestNG and Jenkins.
3. How do I add Selenium to a Maven project?
Add the selenium-java dependency to the pom.xml file and update the Maven project to download the required libraries.
4. Can I use TestNG with Selenium Maven?
Yes. Add the TestNG dependency and configure Maven Surefire Plugin to execute your TestNG tests.
5. Which command runs Selenium tests using Maven?
The commonly used command is mvn clean test, provided the test framework and Maven test execution configuration are correctly set up.
6. Is Maven required for Selenium automation?
No. Selenium can be used without Maven, but Maven is highly useful for professional Java automation projects because it simplifies dependency and build management.
7. Can Maven be integrated with Jenkins?
Yes. Jenkins can execute Maven commands such as mvn clean test to run Selenium automation suites as part of a CI/CD pipeline.
8. Is Selenium with Maven suitable for freshers?
Yes. Learning Selenium with Java and Maven helps freshers understand how automation projects are organised and executed in professional testing environments.
Start learning Selenium with Java and Maven at Palium Skills and develop practical skills for automation testing projects.