2010-02-02 5 views
6

Ceci est mon premier article ici et depuis que j'ai vu beaucoup de bonnes réponses, j'ai décidé de l'essayer. J'essaie d'utiliser XPath pour obtenir un élément spécifique dans un document HTML. Voici un exemple basé sur de la page Web Google:Élément XPath qui contient un attribut et dont le parent parent contient un autre attribut

<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> 

En utilisant l'exemple ci-dessus (qui est simplifié aux fins de demander de l'aide), je voudrais être en mesure de trouver l'élément d'entrée dont le nom = 'q' et qui a un ancêtre qui a 5 parents avec le nom = 'f'. Par exemple, si je devais le faire dans la syntaxe de S.W.A.T. qui est une bibliothèque de test automation web open-source située à http://ulti-swat.wikispaces.com, la syntaxe serait la suivante:

| AssertElementExists | expression | name = q; parentElement.parentElement.parentElement.parentElement.parentElement.name = f | entrée | Je viens de commencer à apprendre XPath et j'essaie de comprendre comment combiner les prédicats avec les axes. Est-il possible de faire des expressions comme celle-ci avec XPath? Si oui quelqu'un de compétent peut-il aider s'il vous plaît?

Répondre

13

Vous pourriez à faire:

//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' 

Vous pouvez utiliser ce bureau XPath Visualizer pour tester vos expressions XPath. A basic tutorial can be found here.

Questions connexes