Pergunta

Este é o meu primeiro post aqui e, como já vi muitas respostas excelentes, pensei em tentar.

Estou tentando usar o XPath para obter um elemento específico em um documento HTML. Aqui está um exemplo baseado na página do Google Web:

<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 o exemplo acima (que é simplificado para fins de pedir ajuda), gostaria de encontrar o elemento de entrada cujo nome = 'q' e quem tem um ancestral que tem 5 pais com o nome = 'f '.

Por exemplo, se eu fizesse isso na sintaxe do SWAT, que é uma biblioteca de testes de automação de código-fonte aberto localizado em http://ulti-swat.wikispaces.com, a sintaxe seria a seguinte:

| AssertElementExists | Expressão | Nome = Q; ParentElement.ParenteLement.parenteLement.parenteLement.parenteLement.name = f | Entrada |

Comecei a aprender XPath e estou tentando entender como combinar predicados com eixos. É possível fazer expressões como essa com XPath? Em caso afirmativo, alguém pode ter conhecimento, por favor ajude?

Foi útil?

Solução

Você poderia fazer:

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

ou

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

Você pode usar este desktop Visualizador XPath Para testar suas expressões XPath. UMA O tutorial básico pode ser encontrado aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top