2013-03-28 46 views
5

我想使用xpath來選擇一個鏈接,其中class="watchListItem"span="icon icon_checked"h3="a test"。我可以使用xpath來獲得匹配的鏈接和跨度,或者鏈接和h3,但不能鏈接,跨度和h3。Xpath - 通過匹配兩個子節點獲取父類

這是我已經試過:

//*[@class = 'watchListItem']/span[@class = 'icon icon_checked'] 

//*[@class= 'watchListItem']/h3[text()='AA'] 

我正在尋找這樣的事情:

//*[@class = 'watchListItem']//*[span[@class = 'icon icon_checked'] and h3[text()='AA']]

<li> 
<a class="watchListItem" data-id="thisid1" href="javascript:void(0);"> 
<span class="icon icon_checked"/> 
<h3 class="itemList_heading">a test</h3> 
</a> 
</li> 

<li> 
<a class="watchListItem" data-id="thisid2" href="javascript:void(0);"> 
<span class="icon icon_unchecked"/> 
<h3 class="itemList_heading">another test</h3> 
</a> 
</li> 

<li> 
<a class="watchListItem" data-id="thisid3" href="javascript:void(0);"> 
<span class="icon icon_checked"/> 
<h3 class="itemList_heading">yet another test</h3> 
</a> 
</li> 

回答

5

您可以使用像這樣的child::位置路徑:

//a[@class="watchListItem" 
    and child::span[@class="icon icon_checked"] 
    and child::h3[text()="another test"]] 

這將選擇錨點data-id="thisid3"

+0

我想出了一個類似的答案,但我用'.// span'而不是'child :: span'。你知道有什麼區別嗎? ':: child'只會選擇直接的孩子還是會選擇任何後代?並不是說這件事很重要。只是好奇。 – Ben

+0

::後裔呢,::小孩應該只選擇直接的孩子:) @Ben –

+1

@Ben雖然.//會選擇後代,而不僅僅是孩子。 –

相關問題