XPath élément qui contient un attribut et dont le parent du parent contient un autre attribut

StackOverflow https://stackoverflow.com/questions/2181406

Question

Ceci est mon premier post ici et depuis que je l'ai vu beaucoup de grandes réponses que je pensais que je donnerais un essai.

Je suis en train d'utiliser XPath pour obtenir un élément spécifique dans un document HTML. Voici un exemple basé sur de la page 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>

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 est 5 les 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 comme suit:

| AssertElementExists | expression | name = q; parentElement.parentElement.parentElement.parentElement.parentElement.name = f | Entrée |

Je viens de commencer à apprendre XPath et essaie de comprendre comment combiner prédicats avec des axes. Est-il possible de faire des expressions comme celui-ci avec XPath? Si oui quelqu'un peut-il bien informé s'il vous plaît aider?

Était-ce utile?

La solution

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 pour tester vos expressions XPath ce bureau XPath Visualiseur . Un .

scroll top