10
votes

Le sélénium peut-il évaluer tous les éléments XPath?

est-il possible pour SELENIUM d'évaluer tous les éléments pouvant correspondre à un certain xpath ?

Par exemple, j'aimerais évaluer si tous les cochés sont vérifiés avec // entrée [type = 'case'] - problème est que je n'en reçois qu'un Élément retourné.


0 commentaires

5 Réponses :


11
votes

Vous pouvez utiliser la commande getXpathCount pour déterminer le nombre d'éléments correspondants. Vous pouvez ensuite les boucler à travers un incrément pour localiser chaque élément individuellement. L'exemple Java (TestG / Junit) suivant vérifierait que toutes les cases à cocher sur une page sont cochées: xxx


2 commentaires

Merci Dave, Santi. Mon problème est que je n'ai pas la possibilité d'utiliser le client Sélénium dans les tests unitaires. Malheureusement, je suis confiné à l'utilisation des tables de Selenium IDE et de commandement, mais cela ne signifie pas que je ne pourrais pas piquer dans certains JS à faire exactement la même chose.


Si vous le résolvez dans l'IDE avec JavaScript, envoyez votre solution. Je serais intéressé à la voir. :)



2
votes

Il n'y a aucun moyen de sélénium pourrait évaluer une liste d'éléments renvoyés par un localisateur. Il suffit de saisir le premier et fait-il qu'il s'agisse de ça.

La réponse Dave est la meilleure alternative pour ce que vous recherchez.


1 commentaires

Je pense que ça mérite toujours d'un aller dans JS :)



2
votes

J'essaie de faire exactement la même chose en sélénium et j'ai essayé d'utiliser l'exemple de @ Dave-Hunt, mais c'est une méthode incorrecte pour trouver un élément individuel dans une collection.

Considérez l'exemple suivant: xxx

Si vous utilisez une expression comme: xxx

Ceci retournera toutes les entrées de texte de la page. Pourquoi? Parce que chaque entrée est le premier élément correspondant dans son propre arbre.

Cependant, si vous utilisez une expression comme: xxx

ou < Pré> xxx

La première expression prendra la première entrée et la deuxième expression prendra la deuxième entrée. Il est très important que vous utilisiez un seul "/" et non un double "//".


0 commentaires

4
votes

avec xxx pré>

Vous ne pouvez rechercher que tous les éléments d'entrée em> dans l'arborescence. Cela ne fonctionnera pas si vous voulez simplement analyser un sous-arbre. P>

Un meilleur moyen est la suivante: p> xxx pré>

qui retournera le résultat # 2 etc. de l'expression XPath entre les crochets. P>

Bien sûr, vous pouvez également faire P>

(//input[@type='text'])[1]


0 commentaires

5
votes

J'ai essayé l'approche ci-dessus et que le sélénium jetait des exceptions que l'élément n'est pas trouvé.Adding Prefix XPath = résolu le problème.

exemple xxx


1 commentaires

Le préfixe xpath = a sauvé ma journée! Mille mercis!