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

如何在Selenium中从无value属性的禁用div获取文本

解决从无value属性的隐藏div中获取文本的问题

我来帮你搞定这个问题!首先咱们先理清楚你遇到的核心问题:

为什么你之前的尝试没成功?

  • arguments[0].value:div元素本身就没有value属性,这个属性是input、select这类表单元素才有的,所以用这个方法肯定拿不到值,返回null是正常的。
  • arguments[0].innerHTML:你提供的HTML代码里这个div是空的,但截图里显示有"20",要么是这个div的文本是纯文本(不是HTML内容),要么是你的定位可能有偏差,或者元素还没加载完成。

试试这些解决方案:

1. 使用textContent或innerText获取纯文本

div的文本内容通常存在textContent(获取所有文本,包括隐藏的)或innerText(仅获取可见文本)属性里,替换你的JS脚本试试:

// 用textContent获取所有文本
String theTextIWant = (String) ((JavascriptExecutor) driver).executeScript("return arguments[0].textContent;", driver.findElement(By.xpath("//div[@class='input-cell field-615']//following-sibling::div[@class='input-cell-accessType-disabled active']")));
System.out.println("textineed: " + theTextIWant);

// 用innerText获取可见文本
String theTextIWant2 = (String) ((JavascriptExecutor) driver).executeScript("return arguments[0].innerText;", driver.findElement(By.xpath("//div[@class='input-cell field-615']//following-sibling::div[@class='input-cell-accessType-disabled active']")));
System.out.println("textineed2: " + theTextIWant2);

2. 直接用Selenium的原生方法

如果元素是隐藏的,Selenium的getText()可能拿不到,但可以试试getAttribute("textContent"):

WebElement targetElement = driver.findElement(By.xpath("//div[@class='input-cell field-615']//following-sibling::div[@class='input-cell-accessType-disabled active']"));
// 尝试getText()
String visibleText = targetElement.getText();
System.out.println("getText结果: " + visibleText);

// 尝试获取textContent属性
String allText = targetElement.getAttribute("textContent");
System.out.println("textContent结果: " + allText);

3. 检查是否是CSS伪元素生成的文本

如果"20"是通过CSS的:before或:after伪元素渲染出来的(比如开发者工具里元素的伪元素里有content),那需要用getComputedStyle来获取:

String pseudoText = (String) ((JavascriptExecutor) driver).executeScript("return window.getComputedStyle(arguments[0], ':before').content;", driver.findElement(By.xpath("//div[@class='input-cell field-615']//following-sibling::div[@class='input-cell-accessType-disabled active']")));
// 注意伪元素的content可能带引号,需要去掉
pseudoText = pseudoText.replaceAll("['\"]", "");
System.out.println("伪元素文本: " + pseudoText);

4. 验证定位是否正确

最后别忘了确认你的XPath真的定位到了目标元素,可以打印元素的标签名或类名来验证:

WebElement targetElement = driver.findElement(By.xpath("//div[@class='input-cell field-615']//following-sibling::div[@class='input-cell-accessType-disabled active']"));
System.out.println("定位到的元素标签: " + targetElement.getTagName());
System.out.println("定位到的元素类名: " + targetElement.getAttribute("class"));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:19:11