2013-03-28 30 views
5

Tôi muốn sử dụng xpath để chọn liên kết có class="watchListItem", span="icon icon_checked"h3="a test". Tôi có thể sử dụng xpath để có được một trong hai liên kết phù hợp và span, hoặc liên kết và h3, nhưng không liên kết, span, và h3.Xpath - Tải lớp cha mẹ bằng cách kết hợp hai nút con

Đây là những gì tôi đã cố gắng:

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

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

Tôi đang tìm một cái gì đó như thế này:

//*[@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> 

Trả lời

5

Bạn có thể sử dụng child:: đường dẫn vị trí như sau:

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

Điều này sẽ chọn neo với data-id="thisid3".

+0

Tôi đã đưa ra một câu trả lời tương tự nhưng tôi đã sử dụng '.// span' thay vì' child :: span'. Bạn có biết sự khác biệt là gì không? Liệu ':: con' chỉ chọn con trực tiếp hay nó sẽ chọn con cháu nào? Không phải là nó quan trọng trong trường hợp. Chỉ tò mò thôi. – Ben

+0

:: hậu duệ làm điều đó, :: con chỉ nên chọn trẻ em ngay lập tức :) @Ben –

+1

@ Mặc dù .// sẽ chọn con cháu, không chỉ trẻ em. –

Các vấn đề liên quan