
Exercice guidé 2 : Interagir avec des éléments et valider du contenu
Approfondissez Robot Framework avec un exercice guidé : navigation, interaction avec des liens, utilisation de variables et validation de contenu textuel sur une page web.
Objectif de l'exercice : navigation et validation de contenu
Ce second exercice guidé vise à consolider vos acquis et à vous familiariser avec d'autres interactions courantes en automatisation de tests web. Nous allons nous concentrer sur la navigation entre les pages via des liens hypertextes, l'interaction avec différents types d'éléments et, surtout, la validation précise du contenu affiché sur une page. Cet exercice mettra également l'accent sur l'utilisation judicieuse des variables pour rendre vos scripts plus maintenables et dynamiques.
A travers cet exercice, vous apprendrez à :
- Naviguer vers une page d'accueil ou une page spécifique.
- Identifier et cliquer sur un lien hypertexte pour accéder à une autre page.
- Utiliser des stratégies d'attente pour s'assurer que la nouvelle page est bien chargée.
- Localiser des éléments spécifiques sur la nouvelle page (par exemple, un titre, un paragraphe).
- Vérifier la présence et l'exactitude d'un texte spécifique à l'intérieur d'un élément ou sur la page.
- Déclarer et utiliser des variables pour les URL, les sélecteurs d'éléments et les textes attendus.
Nous continuerons d'utiliser le site de démonstration "The Internet" (https://the-internet.herokuapp.com/) qui offre une variété de pages et d'éléments propices à ce type d'exercice. Préparez votre environnement Robot Framework avec SeleniumLibrary, comme pour l'exercice précédent.
Scénario détaillé : naviguer, cliquer et vérifier
Notre scénario pour ce deuxième exercice sera le suivant :
- Ouvrir le navigateur et accéder à la page d'accueil du site "The Internet" : https://the-internet.herokuapp.com/.
- Sur la page d'accueil, localiser le lien hypertexte intitulé "Checkboxes" et cliquer dessus.
- Sur la nouvelle page "Checkboxes" qui s'affiche, vérifier que le titre principal (généralement dans une balise `
` sur ce site) est bien "Checkboxes".
- Identifier la première case à cocher sur cette page.
- Vérifier que cette première case à cocher n'est initialement pas cochée.
- Cliquer sur cette première case à cocher pour la sélectionner.
- Vérifier que la première case à cocher est maintenant cochée.
- Fermer le navigateur.
Comme toujours, l'inspection de la page avec les outils de développement du navigateur est une étape préliminaire essentielle. Vous devrez identifier :
- Le sélecteur pour le lien "Checkboxes" sur la page d'accueil.
- Le sélecteur pour le titre de la page "Checkboxes".
- Les sélecteurs pour les cases à cocher, et notamment la première.
Pour les liens, SeleniumLibrary propose le keyword `Click Link`. Pour les cases à cocher, des keywords spécifiques comme `Checkbox Should Be Selected`, `Checkbox Should Not Be Selected`, et `Select Checkbox` / `Unselect Checkbox` seront utiles.
Mise en oeuvre avec Robot Framework et utilisation des variables
Créons un nouveau fichier, par exemple `exercice_interaction_validation.robot`. Nous allons structurer notre script en utilisant des variables pour les URL, les sélecteurs et les textes attendus, afin de démontrer les bonnes pratiques en matière de maintenabilité.
1. Sections `*** Settings ***` et `*** Variables ***` :
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${URL_ACCUEIL} https://the-internet.herokuapp.com/
${BROWSER} Chrome
${LINK_CHECKBOXES_TEXT} Checkboxes
${PAGE_CHECKBOXES_TITLE_SELECTOR} css:h3
${EXPECTED_PAGE_TITLE} Checkboxes
${FIRST_CHECKBOX_SELECTOR} xpath:(//input[@type='checkbox'])[1]
# Alternative pour le premier checkbox si l'ID est stable, ex: id:checkboxes > input:nth-of-type(1)
# Ou plus simplement pour cet exemple: xpath://form[@id='checkboxes']/input[1]
Note : Le sélecteur XPath `(//input[@type='checkbox'])[1]` sélectionne le premier input de type checkbox trouvé sur la page. Adaptez-le si nécessaire après inspection.
2. Section `*** Test Cases ***` :
*** Test Cases ***
Interaction Avec Checkboxes Et Validation Contenu
Open Browser ${URL_ACCUEIL} ${BROWSER}
Maximize Browser Window
# Naviguer vers la page Checkboxes
Wait Until Page Contains Element link:${LINK_CHECKBOXES_TEXT} timeout=10s
Click Link ${LINK_CHECKBOXES_TEXT}
# Vérifier le titre de la nouvelle page
Wait Until Page Contains Element ${PAGE_CHECKBOXES_TITLE_SELECTOR} timeout=10s
Element Text Should Be ${PAGE_CHECKBOXES_TITLE_SELECTOR} ${EXPECTED_PAGE_TITLE}
# Interagir avec la première case à cocher
Wait Until Page Contains Element ${FIRST_CHECKBOX_SELECTOR} timeout=10s
Checkbox Should Not Be Selected ${FIRST_CHECKBOX_SELECTOR}
Select Checkbox ${FIRST_CHECKBOX_SELECTOR}
Checkbox Should Be Selected ${FIRST_CHECKBOX_SELECTOR}
[Teardown] Close BrowserDécortiquons les nouvelles interactions :
- `Click Link` : Ce keyword est spécifique pour cliquer sur des liens (`` tags) en se basant sur leur texte visible ou leur `id`/`name`.
- `Element Text Should Be` : Valide que le texte d'un élément correspond exactement à la chaîne attendue.
- `Checkbox Should Not Be Selected` / `Checkbox Should Be Selected` : Vérifient l'état d'une case à cocher.
- `Select Checkbox` : Coche une case à cocher (si elle n'est pas déjà cochée).
L'utilisation des variables `${URL_ACCUEIL}`, `${LINK_CHECKBOXES_TEXT}`, etc., rend le script plus lisible. Si le texte du lien ou un sélecteur changeait sur le site, il suffirait de mettre à jour la variable correspondante sans toucher à la logique du test.
Renforcement : assertions, keywords de librairie et potentiels keywords utilisateurs
Cet exercice a renforcé l'importance des assertions précises. Au lieu de simplement vérifier qu'une page contient un texte (`Page Should Contain`), nous avons utilisé `Element Text Should Be` pour une validation ciblée sur un élément spécifique (le titre `
`). Pour les cases à cocher, des keywords dédiés offrent une sémantique claire et des vérifications robustes.
Nous avons principalement utilisé des keywords de la librairie `SeleniumLibrary`. Rappelez-vous que cette librairie est très riche et propose des keywords pour interagir avec une grande variété d'éléments web (listes déroulantes, boutons radio, alertes, etc.). N'hésitez pas à consulter sa documentation pour découvrir l'étendue de ses capacités.
Pour aller plus loin, certaines parties de ce scénario pourraient être encapsulées dans des keywords utilisateurs. Par exemple :
*** Keywords ***
Naviguer Vers La Page Checkboxes Depuis Accueil
Wait Until Page Contains Element link:${LINK_CHECKBOXES_TEXT} timeout=10s
Click Link ${LINK_CHECKBOXES_TEXT}
Wait Until Page Contains Element ${PAGE_CHECKBOXES_TITLE_SELECTOR} timeout=10s
Element Text Should Be ${PAGE_CHECKBOXES_TITLE_SELECTOR} ${EXPECTED_PAGE_TITLE}
Verifier Et Cocher La Premiere Checkbox
Wait Until Page Contains Element ${FIRST_CHECKBOX_SELECTOR} timeout=10s
Checkbox Should Not Be Selected ${FIRST_CHECKBOX_SELECTOR}
Select Checkbox ${FIRST_CHECKBOX_SELECTOR}
Checkbox Should Be Selected ${FIRST_CHECKBOX_SELECTOR}Le cas de test deviendrait alors :
*** Test Cases ***
Interaction Avec Checkboxes Via Keywords Utilisateurs
Open Browser ${URL_ACCUEIL} ${BROWSER}
Maximize Browser Window
Naviguer Vers La Page Checkboxes Depuis Accueil
Verifier Et Cocher La Premiere Checkbox
[Teardown] Close BrowserCette refactorisation améliore la lisibilité et la modularité, surtout si ces séquences d'actions sont réutilisées dans d'autres tests. Cela illustre comment combiner efficacement les keywords de librairie pour construire des keywords utilisateurs puissants et adaptés à vos besoins spécifiques.
En exécutant ce test (`robot exercice_interaction_validation.robot`), vous pourrez observer le navigateur effectuer les actions et vérifier les résultats. Les rapports `log.html` et `report.html` vous fourniront un retour détaillé sur chaque étape. Cet exercice vous a permis de manipuler des types d'éléments différents et de renforcer votre compréhension des validations de contenu, compétences essentielles pour l'automatisation de tests web.