Contactez-nous

Exercice guidé 1 : Automatiser une connexion utilisateur

Apprenez pas à pas à automatiser un scénario de connexion utilisateur avec Robot Framework et SeleniumLibrary. Un exercice pratique pour maîtriser les bases de l'automatisation web.

Objectif de l'exercice : maîtriser l'automatisation d'une connexion

Bienvenue dans ce premier exercice pratique ! L'objectif est simple mais fondamental : automatiser le processus de connexion d'un utilisateur à une application web. Nous allons utiliser un site de démonstration spécialement conçu pour s'entraîner aux tests, "The Internet" par Heroku App. Cet exercice vous permettra de mettre en application directe les concepts de keywords, de variables et l'utilisation de la librairie SeleniumLibrary.

A travers cet exercice, vous apprendrez à :

  • Ouvrir un navigateur et naviguer vers une URL spécifique.
  • Identifier les champs de formulaire (nom d'utilisateur, mot de passe) et un bouton de connexion en utilisant leurs sélecteurs (ID, CSS, etc.).
  • Interagir avec ces éléments : saisir du texte, cliquer sur un bouton.
  • Vérifier le résultat de l'action, par exemple, en s'assurant qu'un message de succès s'affiche.
  • Structurer votre test de manière lisible.
  • Créer votre premier keyword utilisateur pour encapsuler la logique de connexion et la rendre réutilisable.

Pour suivre cet exercice, assurez-vous d'avoir Robot Framework et SeleniumLibrary installés, ainsi qu'un navigateur web (Chrome ou Firefox sont recommandés) et le driver correspondant (ChromeDriver ou GeckoDriver) accessible dans votre PATH système.

Le scénario de test : connexion au site de démonstration

Notre scénario de test est le suivant :

  1. Ouvrir le navigateur et accéder à la page de connexion du site : https://the-internet.herokuapp.com/login.
  2. Entrer le nom d'utilisateur "tomsmith" dans le champ approprié.
  3. Entrer le mot de passe "SuperSecretPassword!" dans le champ mot de passe.
  4. Cliquer sur le bouton de connexion.
  5. Vérifier que la connexion est réussie en s'assurant que le message "You logged into a secure area!" est affiché sur la page suivante.
  6. Fermer le navigateur.

Avant de commencer à écrire le script, il est utile d'inspecter la page de connexion avec les outils de développement de votre navigateur (généralement accessibles par un clic droit > Inspecter). Cela vous aidera à trouver les sélecteurs des éléments avec lesquels nous allons interagir. Par exemple, le champ nom d'utilisateur a un `id="username"`, le champ mot de passe un `id="password"`, et le bouton de connexion est un `button` de `type="submit"`.

Ecriture du script Robot Framework : étape par étape

Créez un nouveau fichier, par exemple `exercice_connexion.robot`, et commençons à le remplir. Nous allons d'abord définir les sections de base.

1. La section `*** Settings ***` :
Ici, nous importons la librairie `SeleniumLibrary` qui nous fournira les keywords nécessaires pour interagir avec le navigateur.

*** Settings ***
Library    SeleniumLibrary

2. La section `*** Variables ***` :
Définissons des variables pour l'URL, le navigateur, les identifiants de connexion et les sélecteurs des éléments. Cela rendra notre script plus lisible et facile à maintenir.

*** Variables ***
${URL_LOGIN}       https://the-internet.herokuapp.com/login
${BROWSER}         Chrome
${USERNAME_VALID}  tomsmith
${PASSWORD_VALID}  SuperSecretPassword!
${USERNAME_FIELD}  id:username
${PASSWORD_FIELD}  id:password
${LOGIN_BUTTON}    css:button[type='submit']
${SUCCESS_MESSAGE_AREA}  id:flash
${SUCCESS_TEXT}    You logged into a secure area!

Note : Remplacez `${BROWSER}` par `Firefox` si vous utilisez Firefox. Assurez-vous que le WebDriver correspondant est bien configuré.

3. La section `*** Test Cases ***` :
C'est ici que nous allons écrire la logique de notre test.

*** Test Cases ***
Connexion Utilisateur Reussie
    Open Browser    ${URL_LOGIN}    ${BROWSER}
    Maximize Browser Window
    Input Text      ${USERNAME_FIELD}    ${USERNAME_VALID}
    Input Password  ${PASSWORD_FIELD}    ${PASSWORD_VALID}
    Click Button    ${LOGIN_BUTTON}
    Wait Until Page Contains Element    ${SUCCESS_MESSAGE_AREA}    timeout=10s
    Element Should Contain    ${SUCCESS_MESSAGE_AREA}    ${SUCCESS_TEXT}
    [Teardown]    Close Browser

Décortiquons ce test :

  • `Open Browser` : Ouvre le navigateur spécifié à l'URL donnée.
  • `Maximize Browser Window` : Agrandit la fenêtre du navigateur.
  • `Input Text` : Saisit le nom d'utilisateur dans le champ identifié par `${USERNAME_FIELD}`.
  • `Input Password` : Saisit le mot de passe. C'est similaire à `Input Text` mais ne logue pas la valeur dans les rapports pour des raisons de sécurité.
  • `Click Button` : Clique sur le bouton de connexion.
  • `Wait Until Page Contains Element` : Attend qu'un élément (ici, la zone du message de succès) soit présent sur la page, avec un délai maximum de 10 secondes. C'est une bonne pratique pour gérer les temps de chargement.
  • `Element Should Contain` : Vérifie que l'élément identifié par `${SUCCESS_MESSAGE_AREA}` contient bien le texte de succès attendu. C'est notre assertion principale.
  • `[Teardown] Close Browser` : Cette instruction spéciale assure que le navigateur sera fermé à la fin du test, qu'il réussisse ou échoue.

Amélioration : création d'un keyword utilisateur pour la connexion

Pour rendre notre code plus modulaire et réutilisable, nous allons créer un keyword utilisateur qui encapsule les étapes de saisie des identifiants et de clic sur le bouton de connexion. Ce keyword pourra ensuite être appelé dans ce test ou dans d'autres tests nécessitant une connexion.

Ajoutez une section `*** Keywords ***` à votre fichier :

*** Keywords ***
Se Connecter Avec Identifiants Valides
    [Arguments]    ${user_name}    ${user_password}
    Log    Connexion avec l'utilisateur : ${user_name}
    Input Text      ${USERNAME_FIELD}    ${user_name}
    Input Password  ${PASSWORD_FIELD}    ${user_password}
    Click Button    ${LOGIN_BUTTON}

Verifier La Connexion Reussie
    Wait Until Page Contains Element    ${SUCCESS_MESSAGE_AREA}    timeout=10s
    Element Should Contain    ${SUCCESS_MESSAGE_AREA}    ${SUCCESS_TEXT}

Ouvrir La Page De Connexion Et Maximiser
    Open Browser    ${URL_LOGIN}    ${BROWSER}
    Maximize Browser Window

Ici, `Se Connecter Avec Identifiants Valides` prend deux arguments : `${user_name}` et `${user_password}`. `Log` est un keyword intégré utile pour afficher des messages dans les logs. Nous avons aussi créé des keywords pour l'ouverture de la page et la vérification, pour une meilleure granularité.

Maintenant, nous pouvons simplifier notre cas de test en utilisant ces nouveaux keywords :

*** Test Cases ***
Connexion Utilisateur Reussie Avec Keyword Utilisateur
    Ouvrir La Page De Connexion Et Maximiser
    Se Connecter Avec Identifiants Valides    ${USERNAME_VALID}    ${PASSWORD_VALID}
    Verifier La Connexion Reussie
    [Teardown]    Close Browser

Le test est maintenant plus concis et plus facile à lire. La logique de connexion est centralisée, ce qui simplifie la maintenance : si les sélecteurs des champs de connexion changent, vous n'aurez à les modifier qu'à un seul endroit (dans le keyword utilisateur ou les variables).

Exécution du test et interprétation des résultats

Pour exécuter votre test, ouvrez un terminal, naviguez jusqu'au répertoire où vous avez sauvegardé votre fichier `exercice_connexion.robot`, et tapez la commande :

robot exercice_connexion.robot

Vous devriez voir le navigateur s'ouvrir, effectuer les actions, puis se fermer. Le terminal affichera un résumé de l'exécution. Si tout s'est bien passé, vous verrez un message indiquant que le test a réussi (PASS).

Robot Framework génère automatiquement des fichiers de rapport très détaillés : `log.html` et `report.html`. Ouvrez-les dans votre navigateur. Le fichier `log.html` vous montre chaque étape exécutée, les keywords appelés, les valeurs des variables, et les messages de log. Le fichier `report.html` offre une vue d'ensemble de l'exécution de la suite de tests. Explorez ces rapports pour comprendre comment Robot Framework trace l'exécution de vos tests. En cas d'échec, ces rapports sont cruciaux pour diagnostiquer le problème.

Félicitations ! Vous avez automatisé votre premier scénario de connexion utilisateur avec Robot Framework. Prenez le temps d'expérimenter : essayez avec des identifiants incorrects pour voir comment le test échoue, modifiez les sélecteurs pour observer les erreurs "Element not found", ou essayez d'ajouter d'autres vérifications.