//div[contains(text(),'abc')]
と//div[contains(.,'abc')]
の違いは何ですか?Selenium XPathでのcontainsの使用
"。"ここでは正規表現として使用され、abc
で始まるテキストを意味しますか?
//div[contains(text(),'abc')]
と//div[contains(.,'abc')]
の違いは何ですか?Selenium XPathでのcontainsの使用
"。"ここでは正規表現として使用され、abc
で始まるテキストを意味しますか?
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()
次を選択:
はこの考えてみましょう
//div/.
:
したがって、//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>
を(http://stackoverflow.com/questions/ 38240763/xpath-difference-between-dot-and-text) – Guy