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
相关产品推荐
相关产品推荐

