2014-04-09 73 views
1

下面的代碼:的XPath無法找到使用元素文本()

<label> 
<input class="class1" type="checkbox" checked="checked"/> 
       First text    
</label> 
<label> 
<input class="class2" type="checkbox" checked="checked"/> 
       Second text    
</label> 
<label> 
<input class="class3" type="checkbox" checked="checked"/> 
       Third text    
</label> 

我想要做的是包含文本獲得特定的標籤元素。我嘗試:

//label[text()='First text'] 

//label[contains(text(),'First text')] 

,但它不工作。

請指教!

謝謝! :)

回答

2
 
//label[text()[contains(., 'First text')]] 

你嘗試

 
//label[contains(text(),'First text')] 

不起作用,因爲<label>

<label>[ 
]<input class="class1" type="checkbox" checked="checked"/>[ 
       First text    
]</label> 

有文本節點:包含只是一個線空單休息,在input之前,並且在之後非空e <input>。我已經用上面的方括號概述了它們。

  • contains(node-set, string)這樣的調用強制將第一個參數轉換爲contains爲字符串。
  • 將節點集轉換爲字符串將爲您提供第一個節點的文本內容。 (試一試,string(label)會給你'First text'一堆空白,無論有多少標籤。)
  • 而你的情況,這是空的文本節點,所以contains(text(),'First text')將永遠不會成功。

因此,您必須單獨測試文本節點,並且通過嵌套謂詞來完成,如上所示。

+0

太棒了!謝謝! :) – niemeczek