2016-12-08 3 views
3

//div[contains(text(),'abc')]//div[contains(.,'abc')]の違いは何ですか?Selenium XPathでのcontainsの使用

"。"ここでは正規表現として使用され、abcで始まるテキストを意味しますか?

+2

を(http://stackoverflow.com/questions/ 38240763/xpath-difference-between-dot-and-text) – Guy

答えて

2

text()テストでは、コンテキストノードのすべてのテキストノードの子が選択されています。

ドット(.)は、コンテキストノード自体を選択します。 contains()関数の引数として

.text()両方が("Element Nodes"を参照)すべての子テキストノードの連結であるstring value Sとして解釈される:

要素ノードの文字列値を連結したものです要素ノードのすべてのテキストノード子孫の文字列値の、ドキュメント順での比較。

text()の場合、結果はすべての直接テキストノード値の連結として計算されます。 .の場合、すべての子孫テキストノードのテキスト値が連結されます。

<html> 
    <body> 
    <div>abc</div> 
    <div>444 <span>abc</span></div> 
    <div>def</div> 
    <div>123 abc</div> 
    </body> 
</html> 

//div/text()次を選択:

  • "ABC"
  • "444"
  • "DEF"
  • "123 ABC"。

    はこの考えてみましょう

//div/.

  • "ABC"
  • "444 ABC"
  • "DEF"
  • "123 ABC"

したがって、//div[contains(text(),'abc')]は2つだけdivを選択しますs:

<div>abc</div> 
<div>123 abc</div> 

//div[contains(.,'abc')]abcを含むテキスト・ノードを持つすべてdiv Sを選択しながら、[XPathの:ドットとテキスト(差)]の可能な重複

<div>abc</div> 
<div>444 <span>abc</span></div> 
<div>123 abc</div> 
関連する問題