1

有没有办法计算 HTML 元素的内部文本的字母,而不计算内部元素文本的字母?

我使用 Selenium 库尝试了“WebElements”的“.getText()”方法,但这计算了 (eG "<body><div>test</div></body>" 中的内部 web 元素的内部文本“div”“body”元素产生 4 个字母,而不是“body”元素的0

我是否必须使用额外的 HTML 解析库,如果是,您会推荐哪个?

我正在使用Java 7 ...

4

1 回答 1

1

基于this answer for a similar question,我为您准备了一个解决方案:

这段 JavaScript 接受一个元素,遍历它的所有子节点,如果它们是文本节点,它会读取它们并将它们连接起来返回:

var element = arguments[0];
var text = '';
for (var i = 0; i < element.childNodes.length; i++)
    if (element.childNodes[i].nodeType === Node.TEXT_NODE) {
        text += element.childNodes[i].textContent;
    }
return text;

我将此脚本保存到一个script.js文件中,并将其加载到单个StringviaFileUtils.readFileToString()中。你也可以使用 Guava's Files.toString()。或者只是将其嵌入到您的 Java 代码中。

final String script = FileUtils.readFileToString(new File("script.js"), "UTF-8");
JavascriptExecutor js = (JavascriptExecutor)driver;

...

WebElement element = driver.findElement(By.anything("myElement"));
String text = (String)js.executeScript(script, element);
于 2012-07-03T16:40:18.603 回答