Stocker les variables, l'écho, l'alerte, la gestion des popups dans Selenium IDE

⚡ Résumé intelligent

Stocker les commandes dans Selenium L'IDE enregistre les valeurs d'exécution dans des variables nommées, la commande echo les affiche dans le journal, et une famille de commandes dédiée gère les alertes, les boîtes de dialogue de confirmation et la commutation entre plusieurs fenêtres de navigateur.

  • (I.e. Créer une variable : La commande de stockage prend la valeur dans Target et le nom de la variable dans Valeur.
  • ☑️ Relisez-le : Encadrez le nom par ${ } partout où une commande accepte une cible ou une valeur.
  • Imprimer pour le débogage : La commande echo écrit une chaîne de caractères littérale ou une variable directement dans le journal de l'IDE.
  • 🧪 Les alertes sont automatiquement acceptées : L'IDE clique sur OK pour vous, utilisez donc storeAlert pour capturer le texte du message.
  • Les confirmations nécessitent une décision : Placez chooseOkOnNextConfirmation avant la commande qui ouvre la boîte de dialogue.
  • (I.e. Changement de fenêtre : La fonction selectWindow cible un titre de fenêtre, et une cible nulle renvoie la fenêtre parente.

Stocker les variables, gérer les échos, les alertes et les popups dans Selenium IDE

Dans ce tutoriel, vous apprendrez les commandes du magasin, la commande echo, ainsi que la gestion des alertes et des fenêtres contextuelles. Selenium IDEEnsemble, ces commandes transforment un script enregistré fixe en un script qui réagit à tout ce que l'application renvoie lors de son exécution.

⚠️ Remarque concernant les versions : Les captures d'écran ci-dessous proviennent de l'original Firefox-brancher Selenium L'IDE et les commandes utilisent ses noms Selenese en camelCase. La version actuelle de Chrome, Firefox L'extension Edge conserve le même comportement, mais écrit la plupart des noms de commandes avec des espaces. Une carteping Le tableau apparaît vers la fin de cet article, et chaque commande et capture d'écran originales sont conservées telles que publiées.

Selenium Variables de l'EDI

Boutique

Pour stocker des variables dans Selenium IDE, nous utilisons le de stocker commande. L’illustration ci-dessous stocke la valeur « tutorial » dans une variable nommée « myVariable ».

Selenium Commande de stockage IDE avec la valeur tutoriel enregistrée dans maVariable

Pour accéder à la variable, il suffit de l'encadrer par le symbole ${ … }. Par exemple, pour saisir la valeur de « myVariable » dans le champ de texte « userName » de Mercury Visites guidées, saisissez ${myVariable} dans le champ Valeur.

Selenium Saisissez une commande IDE en utilisant ${myVariable} dans le champ Valeur de la zone de texte Nom d'utilisateur

Commande Echo dans Selenium IDE

Une variable stockée est invisible jusqu'à ce que quelque chose l'affiche, et c'est ce que fait la echo Cette commande s'exécute. Elle écrit un message dans le panneau de journalisation de l'IDE pendant la lecture, ce qui en fait le moyen le plus rapide de confirmer qu'une commande de stockage a bien capturé ce que vous attendiez avant de construire des assertions par-dessus.

La commande accepte l'une ou l'autre forme :

  • Une chaîne de caractères, au sens propre. Insérez le texte dans le Target champ, par exemple Étape de connexion terminée, pour marquer un point de contrôle dans un long script.
  • Une variable. Insérez ${myVariable} dans le Target Le champ et sa valeur stockée sont imprimés à la place du nom.

Deux habitudes rendent la commande echo bien plus utile qu'il n'y paraît. Afficher une variable immédiatement après la commande de stockage qui la crée, afin qu'une erreur soit détectée. tracIl est préférable de se référer à la capture plutôt qu'à l'assertion vingt étapes plus tard. Préfixez chaque message avec l'étape à laquelle il se rapporte, car le panneau de journalisation affiche toutes les commandes dans une liste unique. Notez que la commande `echo` écrit uniquement dans le journal ; elle ne modifie jamais la page et ne provoque jamais d'échec de test. Il est donc possible de la laisser en permanence dans un script.

StoreElementPrésent

Cette commande stocke la valeur « true » ou « false » selon la présence de l'élément spécifié. Le script ci-dessous stocke la valeur booléenne « true » dans « var1 » et « false » dans « var2 ». Pour vérifier, nous utiliserons la commande echo afin d'afficher les valeurs de var1 et var2. URL pour l'illustration ci-dessous a été définie sur le Mercury Page d'accueil des visites.

Selenium Dans l'IDE, la fonction storeElementPresent enregistre la valeur « true » dans var1 et « false » dans var2, ce qui est consigné dans le journal.

StoreText

Cette commande permet de stocker le texte d'un élément dans une variable. L'illustration ci-dessous stocke le texte de la balise h1 de la page d'inscription Facebook dans une variable nommée « textVar ».

Selenium La commande storeText de l'IDE lit css=h1 dans la variable textVar

Puisqu'il s'agit du seul élément de ce type sur la page, nous pouvons utiliser sans risque « css=h1 » comme cible. L'image ci-dessous le montre. Selenium L'IDE a pu enregistrer la chaîne « Sign Up » dans la variable « textVar », car la fonction echo a correctement affiché sa valeur.

Selenium Impression du volet de journalisation de l'IDE : Inscrivez-vous comme valeur stockée dans textVar

Alertes, fenêtres contextuelles et multiples Windows

Les alertes sont probablement la forme la plus simple de fenêtre contextuelle. Les plus courantes Selenium Les commandes IDE utilisées dans la gestion des alertes sont les suivantes :

Alertes Utilisations

assertAlert

assertNotAlert

récupère le message de l'alerte et le compare à une valeur de chaîne que vous avez spécifiée.

assertAlertPrésent

assertAlertNotPresent

indique si une alerte est présente ou non
alerte du magasin récupère le message d'alerte et le stocke dans une variable que vous spécifiez.
storeAlertPrésent Renvoie VRAI si une alerte est présente, FAUX sinon.

vérifierAlerte

verifyNotAlert

récupère le message de l'alerte et vérifie s'il correspond à la valeur de chaîne que vous avez spécifiée.

verifyAlertePrésent

verifyAlertNotPresent

vérifie si une alerte est présente ou non

N'oubliez pas ces deux choses lorsque vous travaillez avec des alertes :

  • Selenium L'IDE clique automatiquement sur le bouton OK de la fenêtre d'alerte, vous ne pourrez donc pas voir l'alerte elle-même.
  • Selenium L'IDE ne prend pas en charge les alertes déclenchées dans la fonction onload() de la page. Il ne gère que les alertes générées après le chargement complet de la page.

Dans cet exemple, nous utilisons la commande storeAlert pour montrer que même si Selenium L'IDE n'affichait pas l'alerte elle-même, mais il était tout de même capable de récupérer le message.

Étape 1) In Selenium IDE, définissez la base URL vers http://jsbin.com. La version complète URL est http://jsbin.com/usidix. Ces extraits de code jsbin datent de Firefox- L'ère des plugins et peut ne plus être résolue ; toute page comportant un bouton qui déclenche une alerte reproduit le même résultat.

Étape 2) Créez le script comme indiqué ci-dessous. La commande click cible le bouton Go !, storeAlert capture le message dans alertMessage et echo l’affiche.

Selenium Script IDE avec les commandes click, storeAlert et echo appliquées à la page de démonstration d'alerte jsbin

Étape 3) Exécutez le script, mais ne vous attendez pas à voir l'alerte. Le volet de journalisation ci-dessous affiche le message capturé, même si la boîte de dialogue n'a jamais été visible.

Selenium Journal IDE affichant le texte d'alerte récupéré par storeAlert après la lecture

Confirmations

Les confirmations sont des fenêtres contextuelles proposant les boutons « OK » et « ANNULER », contrairement aux alertes qui ne proposent que le bouton « OK ». Les commandes utilisables pour les confirmations sont identiques à celles des alertes.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • magasinConfirmation
  • storeConfirmationPrésent
  • vérifierConfirmation / vérifierNonConfirmation
  • vérifierConfirmationPrésente / vérifierConfirmationAbsente

De plus, ces commandes indiquent Selenium Quel bouton choisir, OK ou ANNULER ?

  • choisirOKOnNextConfirmation / choisirOKOnNextConfirmationEtAttendre
  • choisirAnnulerOnNextConfirmation

Placez ces commandes avant la commande qui déclenche la boîte de confirmation, de sorte que Selenium L'IDE sait à l'avance quelle option choisir. Vous ne verrez donc pas la boîte de confirmation pendant l'exécution du script.

Testons une page web avec un bouton programmé pour indiquer si l'utilisateur a cliqué sur OK ou ANNULER.

Étape 1) In Selenium IDE, définissez la base URL vers http://jsbin.com. La version complète URL est http://jsbin.com/enifaf.

Étape 2) Créez le script comme indiqué ci-dessous. Cette fois-ci, nous cliquerons d'abord sur le bouton OK.

Selenium Script IDE plaçant chooseOkOnNextConfirmation avant le clic qui ouvre la boîte de dialogue

Étape 3) Exécutez le script et vous constaterez que la confirmation ne s'affiche pas, mais que la page web indique toujours quel bouton a été actionné. Selenium IDE appuyé.

Page de test indiquant que le bouton OK de la boîte de dialogue de confirmation a été enfoncé.

Étape 4) Remplacez la commande chooseOkOnNextConfirmation par chooseCancelOnNextConfirmation et exécutez à nouveau le script. La page affiche désormais le choix inverse.

Selenium Script IDE modifié pour utiliser chooseCancelOnNextConfirmation au lieu de chooseOkOnNextConfirmation

Multiple Windows

Si vous cliquez sur un lien qui ouvre une nouvelle fenêtre, vous devez d'abord donner des instructions. Selenium Dans l'EDI, vous devez sélectionner la fenêtre avant de pouvoir accéder à ses éléments. Dans l'ancien EDI, vous utilisiez le titre de la fenêtre comme identifiant.

Nous utilisons la commande selectWindow pour basculer entre les fenêtres.

Nous utiliserons le lien http://jsbin.com/ocinaj/1, intitulé « Première fenêtre ». Le lien « ici » sur cette page ouvre Facebook dans une nouvelle fenêtre, après quoi nous donnerons les instructions. Selenium IDE pour effectuer les opérations suivantes :

  • Transférez le contrôle de la fenêtre parente vers la nouvelle fenêtre Facebook en utilisant la commande selectWindow avec le titre de la fenêtre comme localisateur.
  • Vérifiez le titre de la nouvelle fenêtre.
  • Sélectionnez à nouveau la fenêtre d'origine à l'aide de la commande selectWindow avec « null » comme cible.
  • Vérifiez le titre de la fenêtre actuellement sélectionnée.

Le plan ci-dessus se traduit par la séquence en quatre étapes illustrée ici.

Schéma du mécanisme de commutation entre la fenêtre principale et la nouvelle fenêtre, puis de retour à la fenêtre principale.

Étape 1) Définir la base URL vers http://jsbin.com.

Étape 2) Créez le script comme indiqué ci-dessous.

Selenium Script IDE utilisant selectWindow, pause et verifyTitle pour passer d'une fenêtre à l'autre.

Nous avons besoin de la commande pause pour attendre que la fenêtre nouvellement ouverte se charge avant de pouvoir lire son titre.

Étape 3) Exécutez le script. Notez que le cas de test Test réussi, ce qui signifie que nous avons pu basculer entre les fenêtres et vérifier leurs titres avec succès.

Résultat du passage au vert Selenium IDE après vérification des titres des deux fenêtres

N'oubliez jamais que définir la cible selectWindow sur « null » sélectionne automatiquement la fenêtre parente — dans ce cas, la fenêtre où se trouve l'élément « link=here ».

À noter: Facebook a modifié le titre de sa page depuis la création de ce tutoriel. Modifiez le titre attendu dans le script en conséquence.

Moderne Selenium Équivalents de ces commandes dans un IDE

Le Firefox-plugin IDE a été retiré lorsque Firefox passé à l'architecture WebExtensions, et à la version actuelle de Chrome, Firefox L'extension Edge a renommé la plupart des commandes Selenese en utilisant des espaces. Le comportement reste inchangé ; le tableau ci-dessous suffit donc pour interpréter les scripts ci-dessus avec une installation actuelle.

Commande héritée dans ce tutoriel Courant Selenium Commande IDE
de stocker de stocker
echo echo
stockerTexte stocker du texte
storeElementPresent stocker l'élément présent (ou affirmer que l'élément est présent)
assertAlert / verifyAlert alerte de vérification / alerte de vérification
choisirOKOnSuivantConfirmation Choisissez OK lors de la prochaine confirmation.
choisirAnnulerOnNextConfirmation Choisissez Annuler lors de la prochaine confirmation
sélectionnerFenêtre (titre comme cible) sélectionner la fenêtre avec le handle=${handle}

Deux différences méritent d'être soulignées. Les invites, qui ne sont pas abordées dans l'ancien article, disposent désormais de leurs propres commandes : Répondre à la prochaine invite planifie la réponse avant même que le dialogue n'apparaisse, et Réponse du pilote Web sur une invite visible Saisie dans une invite de commandes déjà ouverte. Le changement de fenêtre ne dépend plus du titre de la page. Exécuter poignée de fenêtre de magasin pour d'abord capturer un descripteur, puis passer handle=${yourHandle} pour sélectionner la fenêtre. Cette modification supprime le mode de défaillance décrit dans la note ci-dessus, où un site renomme simplement sa page et le script cesse de trouver la fenêtre. La version officielle Selenium Site du projet IDE liste l'ensemble complet des commandes actuelles.

FAQ

Oui. `${myVariable}` et `${myvariable}` font référence à deux variables différentes. Faire référence à une variable qui n'a jamais été enregistrée renvoie une chaîne vide au lieu de générer une erreur. Adoptez une convention de nommage unique pour l'ensemble de vos fonctions afin d'éviter les valeurs vides silencieuses.

Oui. La syntaxe ${ } est développée dans n'importe quel Target ou un champ Valeur, afin qu'il fonctionne dans une commande ouverte, une expression XPath ou un sélecteur CSS. C'est ainsi qu'un script enregistré est transformé en un script piloté par des données capturées précédemment lors de l'exécution.

Selenese ne possède pas d'opérateurs mathématiques. Utilisez la commande d'exécution de script avec un petit JavaExécutez une expression de script qui lit la variable et renvoie le résultat, puis stockez cette valeur de retour. N'oubliez pas que chaque valeur stockée est reçue sous forme de chaîne de caractères ; vous devez donc la convertir au préalable.

Considérez-les comme locales à un seul test. S'appuyer sur une valeur définie par un test précédent rend la suite de tests dépendante de l'ordre et difficile à déboguer ; stockez donc les données nécessaires à un test à l'intérieur de celui-ci, ou lisez-les à partir d'un fichier de données au début.

Une invite nécessite du texte, pas seulement un bouton de sélection. Utilisez la fonction `answer` sur l'invite suivante en insérant la réponse dans le champ Valeur avant la commande qui l'ouvre, ou utilisez `webdriver answer` sur l'invite visible lorsque la boîte de dialogue est déjà affichée à l'écran.

Les outils d'apprentissage automatique peuvent proposer une séquence de commandes à partir d'une description en langage clair d'un scénario et suggérer des localisateurs plus fiables que ceux produits par un enregistreur. La réparation des localisateurs assistée par l'IA est également utile, car un élément renommé est généralement la cause d'une valeur stockée vide.

Oui. Exportez le test vers Java or PythonLaissez ensuite Copilot restructurer la liste de commandes plate en objets de page et en attentes réutilisables. Vérifiez manuellement la gestion des alertes, car le code généré suppose souvent une boîte de dialogue visible que l'IDE a déjà fermée.

La sélection par titre peut devenir ambiguë et entraîner le choix d'une fenêtre incorrecte. C'est précisément pourquoi l'IDE actuel privilégie l'utilisation de descripteurs : en capturer un dès l'ouverture de la fenêtre, puis basculer vers celle-ci avec `handle=${yourHandle}`.

Résumez cet article avec :