Popular Searches
Popular Course Categories
Popular Courses

Excel Data

Data-Driven Testing

Excel Data in Selenium Automation

Excel Data is commonly used in Selenium automation frameworks to store and manage test data outside the Java test code. Instead of hard-coding usernames, passwords, search values, registration details, product information, or expected results directly inside test methods, testers can maintain the data in Excel worksheets and read it during test execution.

Excel-based test data is especially useful for data-driven testing, where the same Selenium test needs to execute with multiple sets of input values. In Java-based Selenium frameworks, Apache POI is commonly used to read and write Microsoft Excel files.

Excel data can be combined with Selenium WebDriver, TestNG, Data Providers, Page Object Model (POM), Maven, reporting frameworks, and CI/CD pipelines to build maintainable automation frameworks.

Course Resources: Selenium Training | Register for Course Demo


1. What is Excel Data?

Excel Data refers to test information stored in Microsoft Excel worksheets and used by automation scripts during test execution. An Excel file can contain multiple rows and columns representing different test scenarios.

For example, a login test may require multiple username and password combinations. Instead of writing every combination directly inside Java code, the values can be stored in an Excel sheet.

Test CaseUsernamePasswordExpected Result
TC01adminadmin123Login Success
TC02managermanager123Login Success
TC03invalidwrong123Login Failed


2. Why Use Excel Data in Selenium?

Excel provides a convenient way to separate test data from automation logic. This makes test scripts easier to maintain when the data changes frequently.

  • Separates test data from test logic.
  • Supports data-driven testing.
  • Allows multiple test scenarios to be maintained in one file.
  • Reduces hard-coded test data.
  • Makes large test datasets easier to manage.
  • Allows non-developers to review and update test data.
  • Can be integrated with TestNG Data Providers.
  • Can be combined with Page Object Model.
  • Supports reusable automation frameworks.
  • Can store both input and expected output values.


3. Excel Data in a Selenium Framework

Excel File

    |

    v

Excel Reader Utility

    |

    v

Test Data

    |

    v

@DataProvider

    |

    v

TestNG Test Method

    |

    v

Page Object

    |

    v

Selenium WebDriver

    |

    v

Application

    |

    v

Assertions

    |

    v

Test Report


4. Excel File Structure

A typical Excel test-data file contains a header row followed by test-data rows.

UsernamePasswordRoleExpected
adminadmin123AdminDashboard
managermanager123ManagerDashboard
employeeemployee123EmployeeDashboard
invalidwrong123InvalidError

Each row can represent one test-data combination, while each column represents one test parameter.


5. Excel File Formats

Excel files commonly used in Java automation include:

ExtensionFormatTypical Apache POI Class
.xlsOlder Excel formatHSSFWorkbook
.xlsxModern Excel formatXSSFWorkbook

For modern Selenium automation frameworks, .xlsx files are commonly used.


6. What is Apache POI?

Apache POI is a Java library that provides APIs for working with Microsoft Office document formats, including Excel workbooks.

In Selenium automation, Apache POI can be used to:

  • Open Excel workbooks.
  • Access worksheets.
  • Read rows.
  • Read columns.
  • Read individual cells.
  • Write test data.
  • Update existing Excel files.
  • Create Excel files.
  • Process multiple test-data records.


7. Apache POI Maven Dependency

For a Maven-based Java project, Apache POI dependencies can be added to pom.xml.

<dependencies>

    <dependency>

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

        <artifactId>poi-ooxml</artifactId>

        <version>5.4.1</version>

    </dependency>

</dependencies>

The exact dependency version should be selected according to the project's compatibility and dependency-management requirements.


8. Important Apache POI Classes

ClassPurpose
XSSFWorkbookRepresents an .xlsx workbook.
XSSFSheetRepresents a worksheet.
XSSFRowRepresents a row.
XSSFCellRepresents a cell.
WorkbookGeneral workbook interface.
SheetGeneral worksheet interface.
RowGeneral row interface.
CellGeneral cell interface.


9. Reading an Excel Workbook

The first step is to locate and open the Excel workbook.

import java.io.FileInputStream;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

 

FileInputStream file =

        new FileInputStream("src/test/resources/TestData.xlsx");

 

XSSFWorkbook workbook = new XSSFWorkbook(file);

The workbook object provides access to worksheets contained inside the Excel file.


10. Reading an Excel Sheet

XSSFSheet sheet = workbook.getSheet("LoginData");

The getSheet() method retrieves a worksheet using its name.

For example, an Excel workbook may contain:

TestData.xlsx

    |

    |-- LoginData

    |-- RegistrationData

    |-- SearchData

    |-- ProductData


11. Reading a Specific Row

Row row = sheet.getRow(1);

Excel row indexes start from 0 when accessed programmatically.

Excel RowJava Index
First row0
Second row1
Third row2


12. Reading a Specific Cell

Cell cell = sheet.getRow(1).getCell(0);

 

String value = cell.getStringCellValue();

 

System.out.println(value);

The example reads the first cell from the second Excel row.


13. Reading Multiple Rows

Automation frameworks commonly loop through all rows of a worksheet.

int rowCount = sheet.getPhysicalNumberOfRows();

 

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

    Row row = sheet.getRow(i);

    System.out.println(row.getCell(0).toString());

}

This approach allows the framework to process multiple test-data records dynamically.


14. Reading Multiple Columns

int rowCount = sheet.getPhysicalNumberOfRows();

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

 

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

    Row row = sheet.getRow(i);

 

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

        Cell cell = row.getCell(j);

        System.out.print(cell + " | ");

    }

 

    System.out.println();

}


15. Understanding getLastRowNum()

getLastRowNum() returns the zero-based index of the last row that is defined in the sheet.

int lastRow = sheet.getLastRowNum();

 

System.out.println("Last Row Index: " + lastRow);

Because the value is an index, the number should not automatically be interpreted as the total row count.


16. Understanding getPhysicalNumberOfRows()

getPhysicalNumberOfRows() returns the number of physically defined rows in a sheet.

int rowCount = sheet.getPhysicalNumberOfRows();

 

System.out.println("Rows: " + rowCount);

When designing a framework, choose row-count logic carefully based on how the Excel file is structured and whether blank rows are possible.


17. Reading String Data

String username =

        sheet.getRow(1).getCell(0).getStringCellValue();

 

System.out.println(username);

This approach works when the cell contains a string value.


18. Reading Numeric Data

Excel cells can contain numeric values.

double amount =

        sheet.getRow(1).getCell(2).getNumericCellValue();

 

System.out.println(amount);

Numeric values should be handled according to the expected data type of the application.


19. Reading Boolean Data

boolean active =

        sheet.getRow(1).getCell(3).getBooleanCellValue();

 

System.out.println(active);


20. Reading Different Cell Types

Real-world Excel files may contain strings, numbers, dates, booleans, formulas, and blank cells. A reusable Excel utility should therefore handle different cell types safely.

switch (cell.getCellType()) {

    case STRING:

        System.out.println(cell.getStringCellValue());

        break;

    case NUMERIC:

        System.out.println(cell.getNumericCellValue());

        break;

    case BOOLEAN:

        System.out.println(cell.getBooleanCellValue());

        break;

    case BLANK:

        System.out.println("");

        break;

    default:

        System.out.println(cell.toString());

}


21. Using DataFormatter

Apache POI provides DataFormatter for obtaining a formatted representation of a cell value.

DataFormatter formatter = new DataFormatter();

 

String value = formatter.formatCellValue(cell);

 

System.out.println(value);

This can be useful when the framework needs a consistent string representation of different Excel cell types.


22. Excel Data and TestNG DataProvider

One of the most common uses of Excel data is combining it with TestNG's @DataProvider.

@DataProvider(name = "loginData")

public Object[][] loginData() {

 

    return new Object[][] {

        {"admin", "admin123"},

        {"manager", "manager123"},

        {"employee", "employee123"}

    };

}

 

@Test(dataProvider = "loginData")

public void loginTest(String username, String password) {

    System.out.println(username);

}

In a production framework, the values can be loaded from Excel instead of being hard-coded.


23. Excel to DataProvider Flow

Excel Workbook

      |

      v

Excel Reader

      |

      v

Rows and Columns

      |

      v

Object[][]

      |

      v

@DataProvider

      |

      v

@Test Method

      |

      v

Selenium Execution


24. Excel-Based Login Testing

Login testing is one of the most common examples of Excel-driven Selenium automation.

UsernamePasswordExpected Result
adminadmin123Dashboard
managermanager123Dashboard
invalidwrong123Error Message

@Test(dataProvider = "loginData")

public void loginTest(

        String username,

        String password,

        String expectedResult) {

 

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

            .sendKeys(username);

 

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

            .sendKeys(password);

 

    driver.findElement(By.id("loginButton"))

            .click();

 

    System.out.println(expectedResult);

}


25. Excel Data for Registration Testing

Registration forms commonly contain several fields that can be stored in Excel.

NameEmailMobileCity
John[email protected]9876543210Mumbai
David[email protected]9876543211Pune
Robert[email protected]9876543212Delhi

The same registration workflow can then be executed for every row.


26. Excel Data for Search Testing

@DataProvider(name = "searchData")

public Object[][] searchData() {

    return new Object[][] {

        {"Laptop"},

        {"Mobile"},

        {"Headphones"},

        {"Keyboard"},

        {"Mouse"}

    };

}

 

@Test(dataProvider = "searchData")

public void searchTest(String keyword) {

    System.out.println("Searching: " + keyword);

}

The Data Provider can be populated dynamically from an Excel worksheet.


27. Excel Data for E-Commerce Testing

E-commerce automation can use Excel to store products, quantities, prices, discount codes, categories, and expected results.

ProductQuantityCategoryExpected
Laptop1ElectronicsAdded
Mobile2ElectronicsAdded
Shoes1FashionAdded


28. Excel Data with Page Object Model

Excel should normally contain test data, while Page Object classes contain application interaction logic.

Excel Data

    |

    v

Data Provider

    |

    v

Test Class

    |

    v

LoginPage / SearchPage / CheckoutPage

    |

    v

Selenium WebDriver

This separation keeps the framework easier to maintain.


29. Excel Data with POM Example

public class LoginPage {

 

    WebDriver driver;

 

    By username = By.id("username");

    By password = By.id("password");

    By loginButton = By.id("loginButton");

 

    public LoginPage(WebDriver driver) {

        this.driver = driver;

    }

 

    public void login(String user, String pass) {

        driver.findElement(username).sendKeys(user);

        driver.findElement(password).sendKeys(pass);

        driver.findElement(loginButton).click();

    }

}

The Excel reader and Data Provider supply the values while the Page Object performs the browser interaction.


30. Creating a Reusable Excel Reader

Instead of writing Excel-reading code repeatedly in every test class, a reusable utility class can be created.

public class ExcelReader {

 

    private XSSFWorkbook workbook;

 

    public ExcelReader(String filePath) throws Exception {

        FileInputStream input =

                new FileInputStream(filePath);

 

        workbook = new XSSFWorkbook(input);

    }

 

    public String getCellData(

            String sheetName,

            int row,

            int column) {

 

        return workbook

                .getSheet(sheetName)

                .getRow(row)

                .getCell(column)

                .toString();

    }

}


31. Excel Reader Usage

ExcelReader reader =

        new ExcelReader("src/test/resources/TestData.xlsx");

 

String username =

        reader.getCellData("LoginData", 1, 0);

 

String password =

        reader.getCellData("LoginData", 1, 1);

 

System.out.println(username);

System.out.println(password);


32. Excel Data Provider Utility

A reusable Data Provider can convert Excel rows into an Object array.

@DataProvider(name = "excelLoginData")

public Object[][] excelLoginData() {

 

    ExcelReader reader =

        new ExcelReader("src/test/resources/TestData.xlsx");

 

    int rows = reader.getRowCount("LoginData");

 

    Object[][] data = new Object[rows - 1][2];

 

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

        data[i - 1][0] =

            reader.getCellData("LoginData", i, 0);

 

        data[i - 1][1] =

            reader.getCellData("LoginData", i, 1);

    }

 

    return data;

}


33. Handling Header Rows

Most Excel files contain column headers in the first row.

Username | Password | Expected

admin    | admin123 | Dashboard

manager  | manager123 | Dashboard

The framework normally starts reading test records from the row after the header.

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

    // Read test data

}


34. Reading Multiple Excel Sheets

A single workbook can contain different sheets for different test modules.

TestData.xlsx

    |

    |-- LoginData

    |-- SearchData

    |-- RegistrationData

    |-- CheckoutData

    |-- ProductData

This organization can make large automation projects easier to manage.


35. Selecting a Sheet Dynamically

public Sheet getSheet(String sheetName) {

    return workbook.getSheet(sheetName);

}

A test or Data Provider can request the required worksheet by name.


36. Excel Data and Expected Results

Excel can contain both input values and expected results.

InputExpected Result
10 + 2030
5 + 510
100 + 50150

@Test(dataProvider = "calculatorData")

public void calculatorTest(

        int first,

        int second,

        int expected) {

 

    int actual = first + second;

 

    Assert.assertEquals(actual, expected);

}


37. Excel Data with Assertions

Expected values from Excel can be used in assertions.

String expectedTitle =

        reader.getCellData("LoginData", 1, 2);

 

String actualTitle = driver.getTitle();

 

Assert.assertEquals(actualTitle, expectedTitle);

This approach allows expected results to be changed without modifying the test logic.


38. Excel Data and Test Case IDs

Adding a Test Case ID to the Excel file makes test-data management and reporting easier.

Test IDUsernamePasswordExpected
TC_LOGIN_001adminadmin123Success
TC_LOGIN_002invalidwrong123Failure

The Test Case ID can also be included in logs and reports.


39. Excel Data and Test Reports

When Excel data is used with TestNG, the framework can log the current test-data record so that failures can be traced back to a specific scenario.

Test ID: TC_LOGIN_001

Username: admin

Expected: Dashboard

Status: PASS

Sensitive values such as passwords should not be printed into reports or console logs.


40. Handling Empty Cells

Real-world Excel files may contain empty cells. The framework should handle them safely.

Cell cell = row.getCell(2);

 

if (cell == null) {

    System.out.println("Cell is empty");

} else {

    System.out.println(cell.toString());

}


41. Handling Null Rows

Row row = sheet.getRow(rowIndex);

 

if (row == null) {

    System.out.println("Row does not exist");

} else {

    System.out.println(row.getCell(0));

}

Defensive handling prevents unexpected failures when worksheets contain blank rows.


42. Handling Excel File Exceptions

Excel operations involve file I/O and can throw exceptions. Framework utilities should handle these errors appropriately.

try {

    FileInputStream input =

            new FileInputStream("TestData.xlsx");

 

    XSSFWorkbook workbook =

            new XSSFWorkbook(input);

 

} catch (IOException e) {

    e.printStackTrace();

}


43. Closing Excel Resources

Excel files should be closed after use so that file handles are not unnecessarily retained.

try (FileInputStream input =

         new FileInputStream("TestData.xlsx");

     XSSFWorkbook workbook =

         new XSSFWorkbook(input)) {

 

    XSSFSheet sheet =

         workbook.getSheet("LoginData");

 

    System.out.println(

         sheet.getRow(1).getCell(0)

    );

}

Try-with-resources is a useful Java approach for automatically closing resources that implement AutoCloseable.


44. Excel Data vs Hard-Coded Data

Hard-Coded DataExcel Data
Data is inside Java code.Data is stored externally.
Changes require source-code modification.Data can be changed in the workbook.
Large datasets become difficult to manage.Large datasets can be organized in worksheets.
Less separation of concerns.Better separation between data and logic.
Limited data-management flexibility.Useful for data-driven testing.


45. Excel Data vs DataProvider

Excel DataDataProvider
External test-data source.TestNG mechanism for supplying data.
Stores data in worksheets.Supplies data to test methods.
Can contain large datasets.Converts data into test invocations.
Requires an Excel-reading mechanism.Uses TestNG annotation.
Can be combined with DataProvider.Can receive Excel-generated data.


46. Excel Data vs CSV Data

FeatureExcelCSV
Multiple SheetsYesNo
FormattingSupportedLimited
FormulasSupportedNo native formulas
Simple Text StorageSupportedVery convenient
Java LibrariesApache POICSV libraries / Java APIs


47. Excel Data in a Selenium Framework Structure

src

|-- test

|   |-- java

|   |   |-- tests

|   |   |   |-- LoginTest.java

|   |   |   |-- SearchTest.java

|   |   |

|   |   |-- pages

|   |   |   |-- LoginPage.java

|   |   |   |-- SearchPage.java

|   |   |

|   |   |-- data

|   |   |   |-- LoginDataProvider.java

|   |   |

|   |   |-- utilities

|       |   |-- ExcelReader.java

|       |   |-- DriverFactory.java

|

|-- resources

    |-- TestData.xlsx

    |-- config.properties


48. Excel Data and Maven

Maven can manage Apache POI and other project dependencies. The Excel reader can then be used by Selenium and TestNG test classes.

mvn clean test

A Maven-based project can also integrate Excel-driven tests into CI/CD pipelines.


49. Excel Data in CI/CD

Source Code

    |

    v

CI/CD Pipeline

    |

    v

Maven Build

    |

    v

TestNG

    |

    v

Excel Data

    |

    v

Selenium Tests

    |

    v

Application

    |

    v

Reports

When using Excel in CI environments, ensure that the test-data file is available through the project workspace or an appropriate external test-data mechanism.


50. Excel Data with Parallel Testing

Excel-driven tests can participate in parallel execution, but the framework must be designed carefully.

  • Avoid unsafe shared mutable state.
  • Use independent WebDriver instances.
  • Do not modify the same Excel file concurrently without proper synchronization.
  • Prefer read-only test data during parallel execution when possible.
  • Ensure each test invocation receives the correct dataset.

Excel Data

    |

    +---- Test Thread 1

    |

    +---- Test Thread 2

    |

    +---- Test Thread 3

    |

    v

Independent WebDriver Sessions


51. Excel Data and Parameterization

Excel data can be used as a source for parameterized tests. Each Excel row can represent a different combination of test parameters.

Excel Row 1 -> username1, password1

Excel Row 2 -> username2, password2

Excel Row 3 -> username3, password3

 

             |

             v

 

       DataProvider

 

             |

             v

 

       Login Test


52. Excel Data with Multiple Test Parameters

@Test(dataProvider = "userData")

public void userTest(

        String username,

        String password,

        String role,

        String expectedPage) {

 

    System.out.println(username);

    System.out.println(password);

    System.out.println(role);

    System.out.println(expectedPage);

}

The Excel worksheet can contain the corresponding columns.


53. Dynamic Excel Data

A reusable framework should ideally determine the number of rows and columns dynamically instead of assuming a fixed number of records.

int rowCount = sheet.getPhysicalNumberOfRows();

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

 

Object[][] data =

        new Object[rowCount - 1][columnCount];

 

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

    for (int column = 0;

         column < columnCount;

         column++) {

 

        data[row - 1][column] =

            sheet.getRow(row)

                 .getCell(column)

                 .toString();

    }

}


54. Excel Data Utility Design

A good Excel utility should provide reusable operations instead of exposing low-level Excel handling throughout the test suite.

ExcelReader

    |

    |-- openWorkbook()

    |-- getSheet()

    |-- getRowCount()

    |-- getColumnCount()

    |-- getCellData()

    |-- getRowData()

    |-- getSheetData()

    |-- closeWorkbook()


55. Common Mistakes with Excel Data

  • Using an incorrect file path.
  • Using the wrong worksheet name.
  • Using incorrect row or column indexes.
  • Ignoring empty cells.
  • Assuming every cell contains a string.
  • Not closing the workbook.
  • Hard-coding row counts unnecessarily.
  • Exposing passwords in logs.
  • Using one shared mutable workbook unsafely in parallel tests.
  • Putting Excel-reading logic directly inside every test method.
  • Failing to identify which Excel row caused a test failure.
  • Keeping very large datasets entirely in memory without considering scalability.


56. Best Practices for Excel Data

  • Keep test data separate from Selenium interaction logic.
  • Use meaningful worksheet names.
  • Use clear column headers.
  • Include Test Case IDs where useful.
  • Create a reusable Excel Reader utility.
  • Handle different cell types safely.
  • Handle blank rows and cells.
  • Close Excel resources properly.
  • Avoid storing secrets in plain text whenever possible.
  • Do not print passwords or sensitive tokens in reports.
  • Use Data Providers to connect Excel data with TestNG tests.
  • Use POM to separate browser interaction from data management.
  • Keep large datasets manageable and avoid unnecessary memory usage.
  • Make failures traceable to the source test-data row.


57. Practical Login Automation Example

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.Assert;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.DataProvider;

import org.testng.annotations.Test;

 

public class LoginTest {

 

    WebDriver driver;

 

    @BeforeMethod

    public void setup() {

        driver = new ChromeDriver();

        driver.manage().window().maximize();

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

    }

 

    @DataProvider(name = "loginData")

    public Object[][] loginData() {

 

        return new Object[][] {

            {"admin", "admin123", "Dashboard"},

            {"manager", "manager123", "Dashboard"},

            {"invalid", "wrong123", "Login Error"}

        };

    }

 

    @Test(dataProvider = "loginData")

    public void loginTest(

            String username,

            String password,

            String expectedResult) {

 

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

                .sendKeys(username);

 

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

                .sendKeys(password);

 

        driver.findElement(By.id("loginButton"))

                .click();

 

        String actualResult = expectedResult;

 

        Assert.assertEquals(

                actualResult,

                expectedResult

        );

    }

 

    @AfterMethod

    public void tearDown() {

        if (driver != null) {

            driver.quit();

        }

    }

}

In a complete Excel-driven version, the Data Provider would obtain the username, password, and expected result from the Excel workbook.


58. Complete Excel-Driven Architecture

                Excel File

                    |

                    v

              ExcelReader

                    |

                    v

             Data Provider

                    |

                    v

                Test Class

                    |

                    v

              Page Objects

                    |

                    v

             WebDriver

                    |

                    v

              Web Application

                    |

                    v

               Assertions

                    |

                    v

              Test Reports


59. Real-World Example: Login Data

Test IDUsernamePasswordExpected Page
LOGIN_001adminadmin123Dashboard
LOGIN_002managermanager123Dashboard
LOGIN_003employeeemployee123Dashboard
LOGIN_004invalidwrong123Login Error

A single Selenium test can process all four scenarios.


60. Real-World Example: Registration Data

Test IDNameEmailMobileExpected
REG_001John[email protected]9876543210Success
REG_002David[email protected]9876543211Success
REG_003Robertinvalid-email9876543212Email Error


61. Real-World Example: Search Data

@DataProvider(name = "searchData")

public Object[][] searchData() {

 

    return new Object[][] {

        {"Laptop", "Electronics"},

        {"Shoes", "Fashion"},

        {"Books", "Books"},

        {"Mobile", "Electronics"}

    };

}

 

@Test(dataProvider = "searchData")

public void searchTest(

        String keyword,

        String category) {

 

    System.out.println(

        "Keyword: " + keyword

    );

 

    System.out.println(

        "Category: " + category

    );

}


62. Excel Data and Regression Testing

Excel-driven testing is particularly useful in regression suites where the same functionality must be tested with many combinations of input data.

For example, a search regression test can use hundreds of keywords, categories, filters, and expected results without creating hundreds of separate Java test methods.


63. Excel Data and Test Maintenance

When application test data changes frequently, externalizing that data can reduce the number of changes required in the Java test code.

Test Logic

    |

    | remains mostly stable

    v

Excel Test Data

    |

    | changes frequently

    v

Different Test Scenarios


64. Excel Data Security

Excel files can contain sensitive information, so they should be handled carefully.

  • Do not commit real production passwords to source control.
  • Avoid storing API keys and tokens in plain text.
  • Use masked or synthetic credentials for automation where possible.
  • Use environment variables or secret-management solutions for sensitive values.
  • Restrict access to confidential test-data files.
  • Never print sensitive credentials in test reports.


65. Excel Data vs Properties File

ExcelProperties File
Good for multiple rows of test data.Good for key-value configuration.
Supports worksheets.Simple text-based configuration.
Useful for data-driven testing.Useful for URLs, browser settings, and environment configuration.
Can contain many test scenarios.Usually contains configuration values.


66. Excel Data vs Database

ExcelDatabase
Easy for small and medium test datasets.Suitable for large structured datasets.
Easy for manual review.Supports query-based access.
Simple setup.Requires database infrastructure.
Convenient for test-data files.Useful for dynamically generated or centralized data.


67. Practical Project Structure

selenium-project

|

|-- src

|   |-- main

|   |   |-- java

|   |       |-- pages

|   |       |   |-- LoginPage.java

|   |       |   |-- SearchPage.java

|   |       |

|   |       |-- utilities

|   |           |-- ExcelReader.java

|   |           |-- DriverFactory.java

|   |

|   |-- test

|       |-- java

|       |   |-- tests

|       |       |-- LoginTest.java

|       |       |-- SearchTest.java

|       |

|       |-- resources

|           |-- TestData.xlsx

|

|-- pom.xml

|-- testng.xml


68. Learning Roadmap for Excel Data

  1. Understand Excel workbook and worksheet concepts.
  2. Learn Apache POI basics.
  3. Learn how to open an .xlsx file.
  4. Learn how to access worksheets.
  5. Read rows and columns.
  6. Read individual cells.
  7. Handle different cell data types.
  8. Build a reusable Excel Reader.
  9. Connect Excel data with TestNG DataProvider.
  10. Use Excel data with Selenium WebDriver.
  11. Integrate Excel data with Page Object Model.
  12. Use expected results from Excel with assertions.
  13. Handle empty cells and invalid data.
  14. Learn parallel execution considerations.
  15. Integrate Excel-driven tests with Maven and CI/CD.


69. Practical Exercises

  1. Create an Excel file containing five username and password combinations.
  2. Create an Excel Reader utility using Apache POI.
  3. Read username and password from Excel.
  4. Create a TestNG Data Provider using Excel data.
  5. Automate a login page using Excel-driven data.
  6. Create positive and negative login scenarios.
  7. Create an Excel sheet for registration testing.
  8. Create an Excel sheet for search testing.
  9. Store expected results in Excel and validate them with assertions.
  10. Create separate Excel worksheets for different modules.
  11. Integrate Excel Data with Page Object Model.
  12. Execute Excel-driven tests through Maven.


70. Interview Questions on Excel Data

1. Why is Excel used in Selenium automation?

Excel is commonly used to store external test data so that the same test logic can execute with multiple input combinations.

2. Which Java library is commonly used for Excel automation?

Apache POI is commonly used to read and write Microsoft Excel files from Java applications.

3. What is XSSFWorkbook?

XSSFWorkbook represents an Excel workbook in the modern .xlsx format.

4. What is XSSFSheet?

XSSFSheet represents a worksheet within an .xlsx workbook.

5. What is a Row?

A Row represents a horizontal record within an Excel worksheet.

6. What is a Cell?

A Cell represents an individual value within an Excel worksheet.

7. How can Excel data be used with TestNG?

Excel data can be read using Apache POI and converted into Object[][] data for a TestNG Data Provider.

8. Why should Excel reading logic be placed in a utility?

A reusable utility avoids duplicate Excel-reading code and keeps test classes focused on test behavior.

9. Can Excel contain expected results?

Yes. Expected results can be stored in separate columns and used in assertions.

10. Can Excel contain multiple worksheets?

Yes. A workbook can contain multiple worksheets for different modules or test scenarios.

11. What is the difference between .xls and .xlsx?

.xls is the older Excel format, while .xlsx is the modern Office Open XML format.

12. How can empty Excel cells be handled?

The framework can check whether a cell or row is null or blank before attempting to read its value.

13. Why is DataFormatter useful?

DataFormatter can provide a formatted string representation of cell values across different cell types.

14. Can Excel data be used with Page Object Model?

Yes. Excel provides test data while Page Objects handle application interaction.

15. Can Excel-driven tests run in parallel?

Yes, but the framework must be designed for thread safety and should avoid unsafe shared state.

16. Should passwords be stored in Excel?

Real sensitive credentials should generally be avoided in source-controlled Excel files. Secure secret-management mechanisms are preferable for sensitive values.

17. What is data-driven testing?

Data-driven testing executes the same test logic with multiple sets of test data.

18. What is the benefit of separating Excel data from Java code?

It improves maintainability and allows test data to change without requiring changes to the core test logic.

19. Can Excel data be used in regression testing?

Yes. Excel can provide many combinations of inputs for regression scenarios.

20. What is a common mistake when using Excel in Selenium?

Common mistakes include incorrect file paths, wrong sheet names, incorrect indexes, improper cell-type handling, and failure to close workbook resources.


71. Quick Reference Table

ConceptPurpose
Apache POIJava library for Microsoft Office file processing.
XSSFWorkbookRepresents an .xlsx workbook.
XSSFSheetRepresents an Excel worksheet.
RowRepresents a worksheet row.
CellRepresents an individual cell.
DataFormatterFormats cell values as strings.
@DataProviderSupplies test data to TestNG tests.
POMSeparates page interaction logic from test logic.
Excel ReaderReusable utility for reading workbook data.
TestData.xlsxExample external test-data file.


72. Summary

Excel Data is an important part of many Selenium automation frameworks because it allows test data to be maintained separately from automation code. Apache POI provides Java APIs that can be used to read and write Excel workbooks.

Excel data can be combined with TestNG Data Providers to execute the same Selenium test against multiple datasets. It can also be integrated with Page Object Model, Maven, assertions, test reports, regression suites, and CI/CD pipelines.

A well-designed framework should keep Excel-reading functionality inside reusable utilities, handle different cell types safely, manage resources properly, avoid exposing sensitive information, and make each test-data record traceable.

Final Takeaway: Excel-driven testing helps create reusable and maintainable Selenium automation by separating test data from test logic. When combined with TestNG Data Providers and Page Object Model, it becomes a practical foundation for scalable data-driven automation frameworks.


73. Course Resources

Learn more about Selenium automation and professional testing concepts:

whatsapp