Skip to main content

WebTable Handling using Selenium Java

 

Here’s a step-by-step approach to handling WebTable in Selenium Java:

WebTable in Selenium - Definition & Key Points

πŸ“Œ Definition:

A WebTable in Selenium refers to an HTML table (<table> tag) used to organize data in a tabular format on a web page. Selenium provides methods to interact with and extract data from these tables dynamically.

 πŸ“Œ Key Points About WebTables in Selenium

1.      WebTable Structure:

 Composed of rows (<tr>) and columns (<td> or <th>) inside a <table>.

<thead> contains column headers, <tbody> holds table data.

2.      Locating a WebTable: 

Identified using locators like By.id, By.className, By.xpath, etc.

3.      Fetching Table Rows & Columns: 

Use findElements(By.tagName("tr")) for rows.

Use findElements(By.tagName("td")) for columns.

4.      Extracting Cell Data: 

Retrieve text using .getText() method.

5.      Iterating Through Table Data: 

Loop through rows and columns using nested loops.

6.      Clicking Elements Inside a Table: 

Locate buttons or links inside specific rows/columns and interact with them.

7.      Handling Dynamic WebTables:

 WebTables that change data dynamically need explicit waits and pagination handling.

8.      Converting WebTable Data: 

Store data in Lists, Maps, or Excel files for automation reporting.

9.      Use Cases in Automation Testing: 

Data validation, form filling, sorting/filter testing, data-driven testing, etc.

First, inspect the HTML structure of the WebTable.
A standard table follows this pattern:

 

<table id="employeeTable">

    <thead>

        <tr>

            <th>Name</th>

            <th>Role</th>

            <th>Department</th>

        </tr>

    </thead>

    <tbody>

        <tr>

            <td>John Doe</td>

            <td>Software Engineer</td>

            <td>IT</td>

        </tr>

        <tr>

            <td>Jane Smith</td>

            <td>HR Manager</td>

            <td>HR</td>

        </tr>

    </tbody>

</table>

 

 

Basic WebTable selenium Operations

Use By locator to find the <table> element:

Use By locator to find the <table> element:

 

WebElement table = driver.findElement(By.id("employeeTable"));

 

Fetch All Rows from the Table

List<WebElement> rows = table.findElements(By.tagName("tr"));

System.out.println("Total Rows: " + rows.size());

 

 

Fetch All Columns from a Specific Row

List<WebElement> columns = rows.get(1).findElements(By.tagName("td"));

System.out.println("Total Columns: " + columns.size());

 

 

Get Cell Data from a Specific Row & Column

String cellData = columns.get(1).getText(); // Get 2nd column data from 1st row

System.out.println("Cell Data: " + cellData);

 

 

Iterate Through the Entire Table (All Rows & Columns)

for (int i = 1; i < rows.size(); i++) { // Start from 1 to skip header

    List<WebElement> cols = rows.get(i).findElements(By.tagName("td"));

   

    for (WebElement col : cols) {

        System.out.print(col.getText() + " | ");

    }

    System.out.println();

}

 

 

 

Convert WebTable Data into a List

List<String> tableData = new ArrayList<>();

 

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

    List<WebElement> cols = rows.get(i).findElements(By.tagName("td"));

   

    for (WebElement col : cols) {

        tableData.add(col.getText());

    }

}

 

System.out.println("Table Data: " + tableData);

 

 

Comments

Popular posts from this blog

Step-by-Step: Launch Browser, Context, and Page in Playwright and Run Test and Configuration (JavaScript)

πŸŽ₯ Setup Browser, Context, Page & Run Config Test Scripts with package.json & playwright.config.js Step-by-Step: Launch Browser, Context, and Page in Playwright and Run Test and Configuration (JavaScript) 1. Install Playwright You can install Playwright using the following command: npm init playwright@latest 2. Create a Basic Test Script Understand the core Playwright architecture: Element Description browser Controls the browser instance (like Chrome, Firefox, etc.) context Acts like a separate browser profile (cookies, localStorage are isolated) page A single browser tab where interaction happens 3. Run the Test npx playwright test example.spec.js Ways to Run TypeScript Tests Way Command Notes 🟒 Via npx npx playwright test Uses built-in TypeScript support 🟒 With s...

Playwright Test Structure in Details -Session-02

πŸŽ₯ Playwright: test.only, Hooks & Grouping with test.describe Explained Let’s go step-by-step , showing how to build from a single test , to using beforeEach / afterEach , and then organizing things with test.describe . ✅ Step 1: Basic Single Test with test.only import { test, expect } from '@playwright/test' ; test. only ( 'πŸš€ Basic test - check title' , async ({ page }) => { await page. goto ( 'https://example.com' ); await expect (page). toHaveTitle ( /Example Domain/ ); }); test.only ensures only this test runs — great for debugging. ✅ Step 2: Add beforeEach and afterEach import { test, expect } from '@playwright/test' ; test. beforeEach ( async ({ page }) => { console . log ( 'πŸ”„ Setting up before each test' ); await page. goto ( 'https://example.com' ); }); test. afterEach ( async ({ page }, testInfo) => { console . log ( `πŸ“¦ Finished test: ${testInfo.title} `); }); test. only ( ...

Playwright Locators in JavaScript (Complete Guide)

🎯 Playwright Locators in JavaScript (Complete Guide) This guide explains each Playwright locator with: ✅ What it is πŸ• When to use ⚙️ How to use it 🎯 Benefits πŸ§ͺ Code Examples πŸ”Ή 1. Locator by ID ✅ What: Selects an element with a unique id . πŸ• When: Element has a unique id . ⚙️ How: page.locator('#username') 🎯 Benefit: Fast and reliable. <input id="username" /> await page.locator('#username').fill('John'); πŸ”Ή 2. Locator by Class ✅ What: Selects by class . πŸ• When: Repeated or styled elements. ⚙️ How: page.locator('.password') 🎯 Benefit: Useful for shared styling. <input class="password" /> await page.locator('.password').fill('12345'); πŸ”Ή 3. Locator by Text ✅ What: Matches visible element text. πŸ• When: For buttons, links, etc. ⚙️ How: page.getByText('Login') 🎯 Benefit: Human-readable. <button>Login...