You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium TestNG-Java技术问询:如何定位并点击Web表格中包含指定数字的元素

Solution for Locating and Interacting with Web Table Elements in Selenium-TestNG-Java

Hey there! Since you're new to Selenium-TestNG-Java, let's break down exactly how to tackle this table interaction problem. I'll cover both scenarios you mentioned: clicking the target number directly, and clicking the first element of its row to select the whole row.

Approach 1: Directly Click the Target Number

First, let's refine your XPath to specifically target the <b> element containing the exact number 33210266801. Using text-based matching ensures you're hitting the right element every time.

XPath for Target Number

//*[@id="multisujetoSociosTable"]/tbody/tr/td[5]/b[text()='33210266801']

This XPath narrows down to the <b> tag in the 5th column of the table, where the text exactly matches your target number.

Java Code Example

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.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
import java.time.Duration;

public class TableInteractionTest {
    @Test
    public void clickTargetNumber() {
        // Initialize WebDriver (ensure ChromeDriver path is configured correctly)
        WebDriver driver = new ChromeDriver();
        driver.get("your-page-url-here");
        
        // Use explicit wait to handle dynamic table loading
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        
        try {
            // Locate the target <b> element
            WebElement targetNumber = wait.until(
                ExpectedConditions.visibilityOfElementLocated(
                    By.xpath("//*[@id=\"multisujetoSociosTable\"]/tbody/tr/td[5]/b[text()='33210266801']")
                )
            );
            
            // Click the element
            targetNumber.click();
        } finally {
            // Clean up resources
            driver.quit();
        }
    }
}

Approach 2: Click the First Element of the Target Row

If you need to select the entire row by clicking its first element, we can adjust the XPath to find the parent row of the target number, then select the first <td> in that row.

XPath for First Element of Target Row

//*[@id="multisujetoSociosTable"]/tbody/tr[./td[5]/b[text()='33210266801']]/td[1]

This XPath first finds the row (<tr>) that contains your target number in the 5th column, then selects the first <td> in that row.

Java Code Example

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.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
import java.time.Duration;

public class TableRowSelectionTest {
    @Test
    public void selectTargetRow() {
        WebDriver driver = new ChromeDriver();
        driver.get("your-page-url-here");
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        
        try {
            // Locate the first <td> of the target row
            WebElement firstRowElement = wait.until(
                ExpectedConditions.elementToBeClickable(
                    By.xpath("//*[@id=\"multisujetoSociosTable\"]/tbody/tr[./td[5]/b[text()='33210266801']]/td[1]")
                )
            );
            
            // Click to select the entire row
            firstRowElement.click();
        } finally {
            driver.quit();
        }
    }
}

Key Tips for Reliable Tests

  • Explicit Waits: Always use WebDriverWait instead of Thread.sleep()—this ensures your code waits only as long as needed for elements to load, making tests more stable.
  • Handle Whitespace: If the target number might have extra spaces, replace text() with normalize-space(text()) in your XPath to ignore whitespace.
  • Multiple Matches: If there are multiple rows with the same number, use driver.findElements() to get a list of all matching elements, then loop through them to find the correct one.
  • Element State Check: Use elementToBeClickable() instead of just visibilityOfElementLocated() if you need to ensure the element is ready to receive clicks.

内容的提问来源于stack exchange,提问作者ATeemee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 10:32:31