2012-07-03 65 views
1

有沒有計算HTML元素的內部文本的字母而不計算內部元素的文本字母的方法?計算HTML元素的內部文本字母

我嘗試了「.getText()」,‘WebElements’使用硒文庫的方法,但是這在計算(例如,「內腹板元件的內文本<體> < DIV >測試< /格> < /身體>‘爲元素,而不是‘body’元素「的結果在4個字母爲‘格’’體)

我一定要使用額外的HTML解析庫,並如果是,你會推薦哪一個?

我使用的Java 7 ...

+0

哪種語言? – Ryan

+0

我現在添加了使用的語言。 –

+0

看看這些:http://viralpatel.net/blogs/jquery-get-text-element-without-child-element/,http://stackoverflow.com/questions/3422949/jquery-remove-all- child-elements-and-leave-text,http://stackoverflow.com/questions/3421999/jquery-remove-only-text-content-from-a-div,http://stackoverflow.com/questions/9955955/ (沒有jQuery的解決方案) –

回答

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文件並通過FileUtils.readFileToString()裝成一個單一的String。你也可以使用番石榴的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); 
+1

它的工作原理。謝謝:) –

+1

@TimBittersohl:*如果*這已經解決了您的問題,您可以通過接受答案來幫助他人知道。您可以通過單擊答案左側的清除刻度標記來完成此操作,以使其變爲綠色。這裏有更多關於它的信息:http://meta.stackexchange.com/a/5235/159222 – forsvarir