2011-01-06 67 views
19
WebElement body = browser.findElement(By.xpath("//body")); 

body.findElement(By.xpath("")); // I want to get all child elements 
           // inside body, but nothing deeper. 

示例文檔。讓所有直接的孩子和更深層的東西

<html> 
    <body> 
    <div> 
    </div> 
    <span> 
     <table> 
     </table> 
    </span> 
    </body> 
</html> 

預期結果是divspan。我無法控制文件,它們差別很大。

回答

23

("*")給出上下文節點的所有子元素。因此,使用:

body.findElement(By.xpath("*")); 
+1

好的。刪除評論... – 2011-01-06 17:48:19

6
/html/body/* 

將只選擇body的直接子元素。

請記住,如果您複製所有這些選定節點,您還要複製其內容。所以,如果你做copy-of,那麼table也會生成到最終的文檔。

此外,我會推薦閱讀至少XPath的基礎知識,你問了太多類似的問題。

+0

+1正確答案。你寫道:* nodeset將包含他們的子元素也*。這是錯誤的或者不清楚你的想法。我認爲你可以在不丟失的情況下刪除它。 – 2011-01-06 15:35:11

+0

@Alejandro,是的,這不是一個好的公式,不能正確地說出這個。你會怎麼說? – Flack 2011-01-06 15:49:01

+1

也許你想這樣說:*請記住,如果您複製所有這些選定的節點,您也複製他們的內容。* – 2011-01-06 15:54:47

4

這裏的另一種方式來獲得一個元素的直接孩子:中

element.findElement(By.xpath("./*")); 
相關問題