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

Selenium中如何通过XPath获取非可见元素的id对应文本值

错误原因

  • 等待条件选择错误:ExpectedConditions.visibilityOfElementLocated() 用于等待元素可见,要求元素满足DOM中存在、宽高不为0、display属性不为none等可见判定条件。你要定位的元素class为disp-none属于隐藏元素,永远无法满足可见判定,必然触发超时。
  • 定位规则属性值不匹配:你的代码里XPath写的是@id='demandTrackingID',但实际HTML元素的id属性值为TrackID,属性值不匹配导致无法定位到目标元素。

正确实现方案

  1. 替换等待条件为presenceOfElementLocated(),该条件仅校验元素存在于DOM树中,不要求元素可见
  2. 修正定位规则的id属性值为实际的TrackID
  3. 隐藏元素无法通过getText()获取文本(该方法默认仅返回可见元素的文本内容),需要调用getAttribute("textContent")获取隐藏元素的文本值

完整代码示例

// 等待元素存在于DOM树中,不需要可见
WebDriverWait wait = new WebDriverWait(driver, 20);
// 若id全局唯一,直接用By.id("TrackID")定位效率更高
WebElement trackIdElement = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("TrackID")));
// 获取隐藏元素的文本值并去除首尾空白字符
String trackId = trackIdElement.getAttribute("textContent").trim();
// 打印结果
System.out.println(trackId);

如果你需要保留原有XPath的层级校验,可将定位规则替换为 By.xpath("//span[contains(@class,'mat-content')]//div[@id='TrackID']")

内容的提问来源于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.07 06:27:03