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

Understand browser, context, and page in Playwright

πŸŽ₯ Playwright: Browser, Context & Page - Real-time Demo and Multi-User Testing  . 🎯 Goal: Understand browser , context , and page in Playwright 🧠 1. What is a browser ? ✅ Definition: A browser in Playwright is a launched instance of a real browser (Chromium, Firefox, WebKit) that can be used for automated testing. ✅ Purpose: It starts and controls the browser process. It is the root of your test execution. Required to create contexts and pages . ✅ Code Example: ts Copy Edit import { chromium } from 'playwright' ; const browser = await chromium. launch ({ headless : false }); 🧠 2. What is a context (browser context)? ✅ Definition: A context is like a separate browser profile (or incognito tab) inside the browser. Each context is isolated — no cookies, local storage, or sessions are shared. ✅ Purpose: Simulates multiple users or sessions. Enables parallel and isolated testing. Allows setting user-specific prefer...

How to Maximize a Browser window using Playwright Java

  Playwright itself does not have a direct maximize () method like some other browser automation tools, but you can achieve the effect by setting the viewport to the screen size of your display. Below are ways to handle Maximize a browser in Playwright Java  Ø   Setting the viewport to the screen size  o    setViewportSize(1920, 1080): This sets the browser window to a full HD resolution, effectively maximizing it. o    setHeadless(false): Ensures the browser runs in a visible mode so you can see the window being maximized.  Code Snapshot  Playwright playwright = Playwright. create ()   ;   Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));     // Create a new browser context   BrowserContext context = browser.newContext(new Browser.NewContextOptions()          .setViewportSize(1920, 1080));     ...

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...