Pregunta

Esta es mi primera publicación aquí y, como he visto muchas respuestas excelentes, pensé que lo intentaría.

Estoy tratando de usar XPATH para obtener un elemento específico en un documento HTML. Aquí hay un ejemplo basado en la página web de Google:

<html>
  <head>
    <title>XPath Test</title>
  </head>
  <body>
    <form name='f'>
      <table>
        <tbody>
          <tr>
            <td>
              <input name='q' type="text" />
            </td>
          </tr>
        </tbody>
      </table>
    </form>
  </body>
</html>

Usando el ejemplo anterior (que se simplifica para pedir ayuda), me gustaría poder encontrar el elemento de entrada cuyo nombre = 'Q' y que tiene un antepasado que tiene 5 padres con el nombre = 'F '.

Por ejemplo, si tuviera esto en la sintaxis de SWAT, que es una biblioteca de pruebas de automatización web de código abierto ubicada en http://ulti-swat.wikispaces.com, la sintaxis sería la siguiente:

| AfirmareMeMexists | Expression | name = Q; ParentElement.ParentElement.ParentElement.ParentElement.ParentElement.name = f | Entrada |

Acabo de comenzar a aprender XPATH y estoy tratando de entender cómo combinar predicados con ejes. ¿Es posible hacer expresiones como esta con XPath? Si es así, ¿alguien puede ayudarlo por favor?

¿Fue útil?

Solución

Podrías hacer:

//input[@name='q' and ancestor-or-self::*[@name='f']]
// -- input element whose name='q' and who has an ancestor with the name='f'

o

//input[@name='q' and ../../../../../../*[@name='f']]
// -- input element whose name='q' and who is 5 parents up with the name='f'

Puedes usar este escritorio Visualizador xpath Para probar sus expresiones XPath. A El tutorial básico se puede encontrar aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top