我想你不能在這裏使用text()
。因爲此函數返回當前span
元素的一系列子文本節點。有在您的示例2個文本節點:
<span>
<input type='radio'/>
option1
</span>
1文本節點是一個只包含一個換行符<span>
和<input type='radio'/>
之間。
第二文本節點是(在開始時以及在結尾)<input type='radio'/>
和含有option1
文本加2個換行符</span>
之間。
contains
函數需要一個字符串參數而不是一個序列。我認爲它只需要序列中的第一個文本節點,它只包含一個換行符。
如果您需要選擇input
其次,你可以使用下面的表達式一些text
節點:如果您需要選擇span
包含文本option1
和input
與@type='radio'
//input[@type='radio'][contains(following-sibling::text(), 'option1')]
,你可以試試下面的表達式:
//span[contains(., 'option1') and input/@type='radio']
如果您需要選擇input
代替span
再使用後續荷蘭國際集團表示:
//span[contains(., 'option1')]/input[@type='radio']
我可以建議你以下資源來獲得關於XPath的一些信息。 W3C推薦標準包含XPath的完整描述。如果您使用XPath 2.0,那麼你可以看看:
有關的XPath 3.0看一看:
這些recomendations足夠大,很難閱讀。但是您可以在這些文檔中找到a list of all available axes,包括following-sibling::
,a description of text()
,a description of contains()
等
另外還有很多簡要的XPath教程。例如,你可以看看this one。
你可以指定你想要精確選擇文本或輸入標籤? – PRMoureu
我正在查找輸入標籤。下面的建議xpath's爲我工作 –