Data-Driven Testing with Selenium WebDriver and Apache POI

In modern software testing, Data-Driven Testing (DDT) has become a key approach for ensuring the robustness and flexibility of test scripts. Rather than hardcoding input values, DDT separates test data from the test logic, allowing you to run the same test multiple times with different sets of data. When combined with Selenium WebDriver and Apache POI, this approach becomes incredibly powerful for automating browser-based testing with data stored in Excel files.

In this blog, we’ll explore how Data-Driven Testing works, and how you can implement it using Selenium WebDriver and Apache POI in Java.


What is Data-Driven Testing?

Data-Driven Testing is a technique where test data is read from external sources like:

  • Excel spreadsheets
  • CSV files
  • Databases
  • JSON or XML files

This method allows testers to run a single test case with multiple data sets, increasing test coverage and reducing maintenance.

Benefits of DDT:

  • Enhances reusability of test scripts
  • Makes test data easy to manage
  • Enables testing with a variety of input values
  • Supports scalability for large test suites


Why Use Apache POI?

Apache POI is a Java library for reading and writing Microsoft Office documents, including Excel. It supports both .xls and .xlsx formats and is widely used in Selenium-based test automation to extract data from spreadsheets.

Using POI, you can:

  • Read test input values from Excel files
  • Store expected output for comparison
  • Manage test cases easily without touching code


Step-by-Step: Implementing DDT with Selenium and Apache POI

1. Set Up Dependencies

First, include the necessary libraries in your project:

Selenium WebDriver

Apache POI (poi and poi-ooxml)

For Maven projects, your pom.xml might include:

xml


<dependency>

    <groupId>org.seleniumhq.selenium</groupId>

    <artifactId>selenium-java</artifactId>

    <version>4.9.1</version>

</dependency>

<dependency>

    <groupId>org.apache.poi</groupId>

    <artifactId>poi-ooxml</artifactId>

    <version>5.2.3</version>

</dependency>


2. Create Excel File with Test Data

Create an Excel file (e.g., TestData.xlsx) with rows of test inputs:

Username Password

user1 pass123

user2 pass456


3. Read Excel Data Using Apache POI

java


public class ExcelUtils {

    public static String[][] getData(String filePath, String sheetName) throws Exception {

        FileInputStream file = new FileInputStream(filePath);

        Workbook workbook = new XSSFWorkbook(file);

        Sheet sheet = workbook.getSheet(sheetName);

        int rowCount = sheet.getLastRowNum();

        int colCount = sheet.getRow(0).getLastCellNum();


        String[][] data = new String[rowCount][colCount];


        for (int i = 1; i <= rowCount; i++) {

            Row row = sheet.getRow(i);

            for (int j = 0; j < colCount; j++) {

                data[i - 1][j] = row.getCell(j).getStringCellValue();

            }

        }

        workbook.close();

        return data;

    }

}


4. Use Test Data in Selenium Tests

java

@Test(dataProvider = "loginData")

public void loginTest(String username, String password) {

    WebDriver driver = new ChromeDriver();

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


    driver.findElement(By.id("username")).sendKeys(username);

    driver.findElement(By.id("password")).sendKeys(password);

    driver.findElement(By.id("loginBtn")).click();


    // Add assertions here


    driver.quit();

}


@DataProvider(name = "loginData")

public Object[][] getLoginData() throws Exception {

    return ExcelUtils.getData("TestData.xlsx", "Sheet1");

}

Conclusion

Data-Driven Testing with Selenium WebDriver and Apache POI allows you to run automated tests efficiently across a wide range of input scenarios. It separates data from logic, makes your test scripts cleaner, and significantly enhances the maintainability of your testing framework. By integrating Excel-based data handling, your tests become more flexible, readable, and scalable — ideal for robust automation frameworks.

Learn Selenium with Java Training
Read More: Fluent Wait in Selenium Java: A Complete Tutorial


Visit Our IHUB Talent Institute Hyderabad
Get Direction 

Comments

Popular posts from this blog

How to Use Tosca's Test Configuration Parameters

Using Hibernate ORM for Fullstack Java Data Management

Creating a Test Execution Report with Charts in Playwright