Supposons que j'ai ceci (simplifié):
<form id="myform">
<!-- some input fields -->
<input type="submit" value="proceed"/>
</form>
Ensuite, je peux sélectionner le bouton Soumettre par XPath //form[@id='myform']/input[@type='submit']
. Génial.
Cependant, mes modèles peuvent changer et je souhaite être flexible dans la profondeur dans laquelle se trouve le bouton d'envoi. Il pourrait être mis dans un tableau, comme ceci:
<form id="myform">
<!-- some input fields -->
<table><tr><td>
<input type="submit" value="proceed"/>
</td></tr></table>
</form>
Je sais que je peux sélectionner des éléments qui sont des petits-enfants, mais je ne peux pas sélectionner grand-grand-grand -...- childeren de n'importe quelle profondeur. Par exemple:
//form[@id='myform']/*/input[@type='submit']
ne sélectionne que les petits-enfants, pas d'autres profondeurs.//form[@id='myform']/*/*/input[@type='submit']
ne sélectionne que les petits-petits-enfants, ni plus ni moins de profondeur.//form[@id='myform']/**/input[@type='submit']
n'est pas valide.
Alors, comment puis-je sélectionner ce bouton d'envoi de manière fiable sans utiliser d'ID d'élément?
//form//input
renvoie null en C # tandis que Chrome peut trouver 35 entrées en utilisant le même xpathSi vous utilisez XmlDocument et XmlNode.
Dire:
Utilisation:
Cela dépend de l'outil que vous utilisez. Mais .// sélectionnera n'importe quel enfant, n'importe quelle profondeur à partir d'un nœud de référence.
la source
la source
En outre, vous pouvez le faire avec des sélecteurs css:
l'espace entre les éléments dans l'électeur css signifie la recherche de l'entrée [type = 'submit'] que les éléments à n'importe quelle profondeur du formulaire parent # élément myform
la source