1

内部要素のテキストの文字を数えずに、HTML要素の内部テキストの文字を数える方法はありますか?

Seleniumライブラリを使用して「WebElements」の「.getText()」メソッドを試しましたが、これは(eG "<body> <div> test </ div> </body>"の内部Web要素の内部テキストをカウントします。 「body」要素の場合は0ではなく、「div」要素と「body」要素の場合は4文字になります

追加のHTML解析ライブラリを使用する必要がありますか?使用する場合、どちらをお勧めしますか?

私はJava7を使用しています...

4

1 に答える 1

1

同様の質問に対するこの回答に基づいて、私はあなたに解決策を作りました:

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て単一にロードしました。グアバも使えます。または、Javaコードに埋め込むだけです。StringFileUtils.readFileToString()Files.toString()

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 に答える