2
votes

Attendez que la page contient l'élément fonctionne mais que l'élément ne doit pas contenir

Essayer de vérifier si un élément contient un texte spécifique, mais le mot-clé L'élément doit contenir ne trouve pas le texte même si je mets explicitement dans l'attribut xpath qu'il contient le texte. Cependant, le mot clé Attendre jusqu'à ce que la page contienne l'élément fonctionne.

J'ai exécuté le script ci-dessous et j'ai obtenu les résultats suivants

#this was successful
Wait until Page Contains Element  xpath://div[@id="header"]//span[contains(text(), "text")]  

#this resulted to: should have contained text 'text' but its text was ''
Element Should Contain  xpath://div[@id="header"]//span[contains(text(), "text")]  text  


3 commentaires

Cet élément contient-il exactement les quatre caractères «texte» ou contient-il plus d'informations que cela?


L'élément contient plus de caractères comme «ceci est un texte». Mais cela ne devrait pas avoir d'importance, non? Puisque L'élément doit contenir , selon ma compréhension, vérifie uniquement que l'élément contient le texte plutôt que de vérifier si c'est exactement le texte.


@ E.AS.P. Selon la documentation de SeleniumLibrary: "Utilisez 'Element Text should Be' si vous voulez faire correspondre le texte exact, pas une sous-chaîne.", Vous avez raison.


3 Réponses :


1
votes

Il existe une différence entre L'élément doit contenir et Attendre que la page contienne l'élément .

Le premier vérifiera uniquement si pour le moment le DOM contient l'élément avec une sous-chaîne de ce texte, tandis que le dernier attendra (par défaut) jusqu'à 5 secondes pour que cet élément apparaisse dans le DOM afin de valider si ça existe. Ou, pour reformuler: le premier vérifie si la condition est correcte, l'autre écoute les changements dans le DOM pour détecter la valeur nécessaire. Peut-être que votre texte est affiché après un certain temps de chargement?

Depuis la documentation :

L'élément doit contenir :

Vérifie que le localisateur d'élément contient le texte attendu. ... Utilisez le texte de l'élément si vous voulez faire correspondre le texte exact, pas une sous-chaîne.

Attendre que la page contienne l'élément :

Attend que le localisateur d'élément apparaisse sur la page actuelle. Échoue si le délai expire avant que l'élément n'apparaisse.


1 commentaires

Salut, tu as raison. J'essaie en fait de vérifier un texte dans une info-bulle qui apparaît après avoir effectué un survol de la souris. Donc, ce que j'ai fait a été d'effectuer Passer la souris sur , Attendre que la page contienne l'élément , puis L'élément devrait contenir .



0
votes

A réussi à résoudre ce problème. Le script était en fait correct, le seul problème était qu'il y avait un xpath similaire qui apparaît également chaque fois que j'effectue un «survol de la souris» (ce que je fais parce que j'essayais de vérifier une info-bulle). Ainsi, le résultat était qu'il retournait 2 éléments que le framework robot ne peut pas vérifier à moins d'être distingués.

Merci pour les contributions de tous.


0 commentaires

0
votes

Lorsque vous essayez de vérifier si le texte est correct, vous pouvez faire quelque chose comme ceci:

Element Text Should Be   XPATH    TEXT

Vous pouvez également laisser la première partie derrière si vous voulez que le test s'arrête si le texte n'est pas ok.

Run Keyword And Continue On Failure    Element Text Should Be   XPATH    TEXT


0 commentaires