2012-03-25 3 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> 

나는 17237을 포함하는 a 요소를 잡으려고합니다. 따라서 기본적으로 다음 요소를 다음에서 가져옵니다.앞의 요소를 가져 오는 방법은 무엇입니까?

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

답변

26

당신이 사용할 수있는이 xpath : 나는 현재 위치를 표현하는 X를 사용하여, 그것을 밖으로 다이어그램한다면

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

, 그것은 다음과 같을 것이다 :

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

이 그림을 찾을 수 preceding 키워드로 미리 이동은 매우 유용합니다! 오랫동안 색인 생성 규칙에 혼란스러워했습니다! – Skywalker326

1

나는 이것이 오래되었고 "이름"앞에 포함 된 요소를 모르는 경우 알 수 있습니다. 이 요소는 당신을위한 해결책이 아닙니다. 하지만 정확히 그 요소를 찾고 싶다면 페이지 전체에 여러 개의 "171"요소가 있어야합니다. 나머지와 구별하는 방법은 다음을 사용할 수 있습니다. XPath는의

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

설명 :<a> 태그와 함께 text 방법을 사용하여 다음 요소를 171

관련 문제