online - xpath selenium
Consulta Xpath para encontrar elementos que contienen un cierto descendiente (3)
Estoy usando Html Agility Pack para ejecutar consultas xpath en una página web. Quiero encontrar las filas en una tabla que contienen un cierto elemento interesante. En el siguiente ejemplo, quiero buscar la segunda fila.
<table name="important">
<tr>
<td>Stuff I''m NOT interested in</td>
</tr>
<tr>
<td>Stuff I''m interested in</td>
<td><interestingtag/></td>
<td>More stuff I''m interested in</td>
</tr>
<tr>
<td>Stuff I''m NOT interested in</td>
</tr>
<tr>
<td>Stuff I''m NOT interested in</td>
</tr>
</table>
Estoy buscando hacer algo como esto:
//table[@name=''important'']/tr[has a descendant named interestingtag]
Excepto con la sintaxis de xpath válida. ;-)
Supongo que podría encontrar el elemento interesante en sí mismo y luego seguir mi camino hasta la cadena principal desde el nodo que se devuelve, pero parecía que debería haber una manera de hacerlo en un solo paso y solo estoy siendo denso.
"tiene un descendiente llamado interestintag" se escribe .//interestintag
en XPath, por lo que la expresión que está buscando es:
//table[@name=''important'']/tr[.//interestingtag]
En realidad, debes buscar un descendiente, no un niño:
//table[@name=''important'']/tr[descendant::interestingtag]
Sé que esto no es lo que el OP estaba pidiendo, pero si quisieras encontrar un elemento que tuviera un descendiente con un atributo particular, podrías hacer algo como esto:
//table[@name=''important'']/tr[.//*[@attr=''value'']]