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

Selenium提取表格ID时拿到同一行两个逗号分隔ID,如何获取单个ID

Web自动化测试逗号分隔ID提取解决方案

核心逻辑

你当前代码拿到的单元格文本是两个ID拼接的逗号分隔串,直接对该字符串做拆分即可提取单个可用ID,同时需要先修正你现有代码中的两处变量名笔误。

具体修改点

  • 修正变量笔误:你定义的列表长度变量为tableValueSizes,后续XPath拼接时误写为tableValueSize;最后调用getText时的变量名误写为latestId(实际定义的变量为latestIds),两处笔误都会直接引发运行异常。
  • 拆分ID字符串:获取到完整的拼接文本后,用split(",")按逗号分割为数组,根据需求取对应位置的ID即可,同步调用trim()清除ID前后可能存在的多余空格。
    • 取第一个ID:取分割后数组索引为0的元素
    • 取第二个ID:取分割后数组索引为1的元素

修改后代码示例

public static HashMap<String, String> Values; 
    
public static void PlanningScreenFetchPlanningandDemandID(WebDriver driver) throws InterruptedException
{
    Values = new HashMap<String, String>();
    List<WebElement> tableValue = driver.findElements(By.xpath("//table//tr//td[contains(@class,'mat-column-demandId')]//span"));
    // 修正变量名笔误
    int tableValueSize = tableValue.size();
    WebElement latestIds = driver.findElement(By.xpath("(//table//tr//td[contains(@class,'mat-column-demandId')]//span)["+tableValueSize +"]"));
    // 拆分逗号分隔的ID,需要取第二个ID则将[0]改为[1]即可
    String targetId = latestIds.getText().split(",")[0].trim();
    Values.put("latestDataId", targetId); 
    System.out.println(targetId);
    String Id = AppXPathsConstants.columnInputEntryXpath_replace.replace("XXXX", "ID") ;
    inputEntry(driver, Id , targetId);
}

更稳定的可选方案

如果两个ID在前端DOM结构中是分别存放在同一个td下的不同子元素内,你可以直接调整XPath定位到对应ID的子元素,无需做文本拆分,避免ID本身包含逗号的极端场景影响。比如两个ID分别放在td下的两个span标签中,可将XPath调整为直接定位对应位置的span标签获取单个ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:09:04