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

Quiero capturar a elemento que contiene 171. Así que, básicamente, el elemento anterior de la Siguiente.¿Cómo obtener el elemento anterior?

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

Respuesta

26

Se puede usar esta xpath:

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

Si yo fuera a diagrama a cabo, utilizando una X para representar la ubicación actual, se vería así:

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

Este diagrama es tan útil! ¡Me han confundido las reglas de indexación durante tanto tiempo! – Skywalker326

1

Sé que esto es antiguo y si no conocía el elemento contenedor que precede al "Nombre". elemento esto no sería una solución para ti. PERO, si quisieras encontrar exactamente ese elemento y hay varios elementos "171" en toda la página. La manera de distinguirlo del resto, puede usar lo siguiente.

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

Explicación de XPath:text Usando el método junto con <a> etiqueta y luego seguir adelante con preceding palabra clave para localizar el elemento 171

Cuestiones relacionadas