2011-01-06 15 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

コメントを削除しています... –

6
/html/body/* 

bodyの直下の子要素のみを選択します。

これらすべての選択したノードをコピーすると、そのコンテンツもコピーされることに注意してください。したがって、copy-ofを実行すると、結果ドキュメントにtableも生成されます。

また、少なくともXPathの基本を読むことをお勧めしますが、あまりにも多くの類似の質問をしてください。

+0

+1正解です。あなたは書きました:* nodesetは子要素も含んでいます*。これは間違っているか、あなたの考えを明確にしていません。私はあなたが失うことなくそれを取り除くことができると思います。 –

+0

@Alejandro、ええ、それは良い処方ではありませんが、これを正しく言い表すことはできません。それはどういうことですか? – Flack

+1

多分あなたは次のようなことを言いたかったでしょう:*あなたがこのすべての選択されたノードをコピーすると、あなたはそのコンテンツもコピーしています* –

4

は、ここで要素の直接の子を取得するための別の方法です:

element.findElement(By.xpath("./*")); 
1

child代わりのdescendant 5月には、誰かを助けます。

関連する問題