2012-03-25 45 views
12
<p class="small" style="margin: 16px 4px 8px;"> 
<b> 
<a class="menu-root" href="#pg-jump">Pages</a> 
: 
<b>1</b> 
, 
<a class="pg" href="viewforum.php?f=941&start=50">2</a> 
, 
<a class="pg" href="viewforum.php?f=941&start=100">3</a> 
... 
<a class="pg" href="viewforum.php?f=941&start=8400">169</a> 
, 
<a class="pg" href="viewforum.php?f=941&start=8450">170</a> 
, 
<a class="pg" href="viewforum.php?f=941&start=8500">171</a> 
<a class="pg" href="viewforum.php?f=941&start=50">Next.</a> 
</b> 
</p> 

Tôi muốn bắt a phần tử có chứa 171. Vì vậy, về cơ bản phần tử trước đó từ Tiếp theo.Cách lấy phần tử trước?

//a[.='Next.']//Not sure how to use preceding here 

Trả lời

26

Bạn có thể sử dụng này xpath:

//a[.="Next."]/preceding::a[1] 

Nếu tôi được sơ đồ nó ra, sử dụng một X để đại diện cho vị trí hiện tại, nó sẽ trông như thế này:

------------------+------+------------------ 
preceding-sibling | self | following-sibling 
------------------|------|------------------ 
last() ... 2 1 | X | 1 2 ... last() 
------------------+------+------------------ 
+0

sơ đồ này là rất hữu ích! Tôi đã bị nhầm lẫn bởi các quy tắc lập chỉ mục quá lâu! – Skywalker326

1

Tôi biết điều này cũ và nếu bạn không biết phần tử chứa trước "Tên". yếu tố này không phải là giải pháp cho bạn. NHƯNG, nếu bạn muốn tìm chính xác yếu tố đó và có một số "171" yếu tố trên trang. Cách để phân biệt với phần còn lại, bạn có thể sử dụng phần sau.

//p[b[contains(., 'Next.')]]//a[contains(., '171')] 
3
//a[contains(text(), 'Next.')]/preceding::a[contains(text(), '171')] 

Giải thích về xpath: Sử dụng text phương pháp cùng với <a> thẻ và sau đó di chuyển về phía trước với preceding từ khóa để xác định vị trí các phần tử 171

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