0
因此,在Selenium中有一個WebElement,我試圖通過包含文本節點的XPath獲取它的所有直接子元素。我已經嘗試了XPath「*」,它可以工作,但不會給我任何文本節點(如果有的話)。根據XPath的文檔,我嘗試了很多東西:Selenium:帶XPath的InvalidSelectorException child :: node()
- 「child :: node()」給了我InvalidSelectorException。
- 試圖用「*」獲取所有節點,然後嘗試使用「text()」獲取所有文本節點:在「text()」查詢中給我InvalidSelectorException。
我在Chrome上使用XPathHelper擴展的方式嘗試了這些XPath,它的工作原理與此相似,但它似乎不適用於Selenium(Chrome WebDriver和PhantomJS)。
這是我的循環,我認爲應該工作:
for(WebElement child : node.findElements(new By.ByXPath("child::node()"))) {
//Do something with child
}
哪裏可能是問題?
@Faterou文本節點可能會很痛苦。 Selenium的getText()方法試圖屏蔽你,但它並不適用於所有情況。我的方法被稱爲getHiddenText,因爲Selenium getText()方法在隱藏元素時不返回文本。但它會返回複雜的文本節點文本,無論是否隱藏。一個警告,它會返回非ASCII字符,如果存在,所以我經常添加.replaceAll(「[^ \\ x20 - \\ x7e]」,「」);來電。 – MikeJRamsey56
這可能效果很好,謝謝!唯一的問題是我通過Crawljax使用Selenium,並且我沒有直接訪問驅動程序;我可以通過具有名爲executeJavaScript(String)的函數的接口EmbeddedBrowser進行訪問,所以我不能放置任何參數。我知道我沒有在問題中指定這個,所以我猜這已經解決了...... – Faterou
另外,textContent返回所有後代的文本值,我只是想要直接的孩子。 – Faterou