Uso mucho XPath al ubicar elementos en páginas web usando Selenium, y he dejado de usar node1 // node2 para usar node1/descenddant :: node2 más recientemente. ¿Cuál es la diferencia entre los dos métodos? ¿Es uno más eficiente que el otro?¿Cuál es la diferencia entre // node y/descenddant :: node en xpath?
fragmentoEjemplo XML para demostrar:
<div id="books">
<table>
<tr><td class="title">Lord of the Rings</td><td class="author">JRR Tolkein</td></tr>
<tr><td class="title">The Hitch-Hikers Guide to the Galaxy</td><td class="author">Douglas Adams</td></tr>
</table>
</div>
Por lo tanto, sería:
id('books')//td[@class='title']
o:
id('books')/descendant::td[@class='title']
Debería haber recorrido el TR antes de pedir. Para otros http://www.w3.org/TR/xpath#path-abbrev es la sección relevante. Sin embargo, parece que // es la abreviatura de descendiente o sí mismo, por lo que no es exactamente lo mismo.Además, la razón por la que me he mantenido alejado de usar // es que // nodo [1] no es lo mismo que/descendiente :: nodo [1] –
He ampliado ese punto más arriba. // no es descendiente-o-uno, es descendiente-o-uno-mismo/infantil ... que se parece muchísimo a mi descendencia. –
De acuerdo. Debidamente notificado. :) –