Cas pratiques Selenium

30 cas pratiques Selenium disponibles. Niveaux : fondamental (10), avancé (10), expert (10).

Fait partie de : Cas pratiques de tests et qualité logicielle

FondamentalSelenium

Automatiser la navigation entre deux pages

Contexte Une application contient un lien permettant de naviguer vers une page "Contact". Le Problème Il faut automatiser le clic sur le lien et vérifier que l’URL contient "/contact". Contraintes Le script doit cliquer sur le lien via un sélecteur fiable puis vérifier l’URL avec driver.getCurrentUrl(). Livrable attendu Un script Selenium simple validant la navigation correcte.

seleniumnavigationurl verification+1
FondamentalSelenium

Automatiser la sélection d’une option dans une liste déroulante

Contexte Un formulaire contient une liste déroulante permettant de sélectionner un pays. Le Problème Il faut automatiser la sélection de l’option "France". Contraintes Utiliser la classe Select pour choisir l’option par texte visible. Vérifier ensuite que la valeur sélectionnée correspond bien à "France". Livrable attendu Un script Selenium simple démontrant la sélection correcte d’une option dans une liste déroulante.

seleniumdropdownselect+1
FondamentalSelenium

Automatiser la vérification d’un message d’erreur

Contexte Une tentative de connexion invalide doit afficher un message d’erreur. Le Problème Il faut automatiser le test pour vérifier que le message "Identifiants incorrects" apparaît. Contraintes Le script doit remplir des identifiants invalides, soumettre le formulaire et vérifier la présence du message d’erreur. Livrable attendu Un test Selenium simple validant l’affichage correct du message d’erreur.

seleniumerror messageform testing+1
FondamentalSelenium

Automatiser un test de formulaire simple

Contexte Une page contient un formulaire avec un champ nom et un bouton envoyer. Le Problème Il faut automatiser la saisie du nom "Alice" et vérifier qu’un message de confirmation apparaît. Contraintes Le script doit localiser le champ, saisir la valeur, cliquer sur envoyer et vérifier la présence du message "Merci Alice". Livrable attendu Un script Selenium simple testant le bon fonctionnement du formulaire.

seleniumform testingwebelement+1
FondamentalSelenium

Automatiser un test de vérification de titre de page

Contexte Une page d’accueil doit afficher un titre spécifique après chargement. Le Problème Aucun test Selenium n’existe pour vérifier que le titre affiché correspond au titre attendu. Contraintes Écrire un script Selenium qui ouvre la page, récupère le titre via driver.getTitle() et vérifie qu’il correspond à "Accueil". Le test doit être simple et clair. Livrable attendu Un script automatisé vérifiant correctement le titre de la page.

seleniumpage titleautomation+1
FondamentalSelenium

Corriger un test Selenium avec mauvais usage de findElements

Contexte Un test doit vérifier qu’au moins un élément avec la classe "item" est présent. Le Problème Le code actuel : WebElement items = driver.findElements(By.className("item")); assertTrue(items.size() > 0); Le type retourné est incorrect. Contraintes Corriger uniquement la déclaration pour utiliser la bonne collection. Livrable attendu Un script Selenium fonctionnel vérifiant la présence d’éléments.

seleniumwebelementcollection+1
FondamentalSelenium

Corriger un test Selenium échouant à cause d’un délai de chargement

Contexte Un test clique sur un bouton qui charge dynamiquement du contenu. Le Problème Le script actuel échoue car l’élément cible n’est pas encore présent : driver.findElement(By.id("loadData")).click(); driver.findElement(By.id("result")).getText(); L’élément "result" apparaît après un court délai. Contraintes Ajouter une attente explicite pour garantir que l’élément est visible avant récupération du texte. Livrable attendu Un script corrigé utilisant WebDriverWait pour stabiliser le test.

seleniumwaitdynamic content+1
FondamentalSelenium

Corriger un test Selenium échouant à cause d’un mauvais xpath

Contexte Un test doit sélectionner un bouton contenant le texte "Valider". Le Problème Le code actuel : driver.findElement(By.xpath("//button[text()='Valider']")).click(); Le bouton contient des espaces autour du texte. Contraintes Adapter le xpath pour gérer les espaces correctement. Livrable attendu Un script Selenium corrigé utilisant un xpath robuste.

seleniumxpathlocator+1
FondamentalSelenium

Corriger un test Selenium qui ne trouve pas le bon élément de connexion

Contexte Un test Selenium automatise la connexion d’un utilisateur sur une application web. Le script doit remplir l’email, le mot de passe et cliquer sur le bouton de connexion. Le Problème Le code suivant échoue car le sélecteur du bouton est incorrect : driver.get("https://example.com/login"); driver.findElement(By.id("email")).sendKeys("user@test.com"); driver.findElement(By.id("password")).sendKeys("123456"); driver.findElement(By.id("loginBtn")).click(); Le bouton réel possède l’attribut id="submit-login". Contraintes Corriger uniquement le sélecteur afin que le test fonctionne sans modifier la logique globale. Livrable attendu Un script Selenium corrigé permettant une connexion automatisée fonctionnelle.

seleniumwebelementlocator+1
FondamentalSelenium

Corriger un test Selenium utilisant un mauvais sélecteur CSS

Contexte Un test doit cliquer sur un bouton identifié par la classe "btn-primary". Le Problème Le code actuel ne fonctionne pas : driver.findElement(By.cssSelector("btn-primary")).click(); Le sélecteur CSS est incorrect. Contraintes Corriger uniquement le sélecteur pour qu’il cible correctement la classe. Livrable attendu Un script Selenium corrigé utilisant un sélecteur CSS valide.

seleniumcss selectorlocator+1
AvancéSelenium

Automatiser la vérification d’un tableau dynamique

Contexte Une page affiche un tableau dynamique chargé via requête AJAX. Le Problème Il faut vérifier que le tableau contient au moins 5 lignes après chargement. Contraintes Attendre que le tableau soit visible, récupérer la liste des lignes via findElements et vérifier leur nombre. Livrable attendu Un script Selenium validant correctement la présence et le nombre minimal de lignes.

seleniumtable testingajax+1
AvancéSelenium

Automatiser un scénario avec iframe et validation de contenu

Contexte Une page contient un formulaire intégré dans une iframe. Le test doit remplir le formulaire et vérifier un message de confirmation. Le Problème Le script actuel ne parvient pas à localiser les éléments à l’intérieur de l’iframe. Contraintes Basculer correctement dans l’iframe via switchTo().frame(), interagir avec les éléments, puis revenir au contexte principal. Vérifier l’affichage du message de succès. Livrable attendu Un script Selenium fonctionnel démontrant la gestion correcte d’une iframe et la validation du comportement attendu.

seleniumiframecontext switching+1
AvancéSelenium

Automatiser un scénario avec scroll et élément hors viewport

Contexte Un bouton important se trouve en bas de page et n’est pas visible immédiatement. Le Problème Le test doit interagir avec cet élément malgré sa position hors écran. Contraintes Utiliser JavascriptExecutor ou Actions pour faire défiler la page jusqu’à l’élément puis cliquer dessus. Vérifier le résultat attendu. Livrable attendu Un script Selenium démontrant la gestion correcte du scroll et de l’interaction.

seleniumscrolljavascript executor+1
AvancéSelenium

Automatiser un test avec données paramétrées

Contexte Une page de connexion doit être testée avec plusieurs combinaisons d’identifiants valides et invalides. Le Problème Le test actuel ne couvre qu’un seul cas. Contraintes Mettre en place un test paramétré utilisant un jeu de données pour tester plusieurs scénarios : succès, mot de passe invalide et utilisateur inexistant. Livrable attendu Un script Selenium structuré permettant l’exécution répétée du test avec différentes données.

seleniumdata drivenparameterization+1
AvancéSelenium

Corriger un test Selenium avec gestion incorrecte des alertes

Contexte Une action utilisateur déclenche une alerte JavaScript nécessitant confirmation. Le Problème Le script actuel ne gère pas l’alerte : driver.findElement(By.id("delete")).click(); driver.findElement(By.id("result")).getText(); Le test échoue car l’alerte bloque l’exécution. Contraintes Gérer correctement l’alerte via switchTo().alert(), accepter l’alerte puis poursuivre le test. Livrable attendu Un script Selenium corrigé gérant l’alerte et validant le résultat attendu.

seleniumalert handlingautomation+1
AvancéSelenium

Corriger un test Selenium avec gestion incorrecte des fenêtres multiples

Contexte Un clic sur un lien ouvre une nouvelle fenêtre ou onglet contenant des informations complémentaires. Le Problème Le script actuel ne change pas de contexte : driver.findElement(By.id("openWindow")).click(); driver.findElement(By.id("details")).getText(); L’élément "details" se trouve dans la nouvelle fenêtre. Contraintes Récupérer les handles de fenêtres, basculer vers la nouvelle fenêtre, puis vérifier le contenu. Livrable attendu Un script Selenium corrigé gérant correctement les fenêtres multiples.

seleniumwindow handlenavigation+1
AvancéSelenium

Corriger un test Selenium avec mauvaise stratégie de locator dynamique

Contexte Une liste d’éléments possède des identifiants dynamiques générés à chaque chargement. Le Problème Le script utilise un locator basé sur un id instable : driver.findElement(By.id("item_1234")).click(); L’id change à chaque session. Contraintes Adapter le locator pour utiliser un xpath ou un css selector plus stable basé sur un attribut constant. Livrable attendu Un script Selenium robuste utilisant une stratégie de localisation fiable.

seleniumdynamic locatorxpath+1
AvancéSelenium

Corriger un test Selenium échouant sur élément non cliquable

Contexte Un bouton apparaît à l’écran mais n’est pas immédiatement cliquable à cause d’une animation. Le Problème Le script actuel : driver.findElement(By.id("confirm")).click(); L’action échoue avec une exception ElementNotInteractableException. Contraintes Ajouter une attente explicite pour garantir que l’élément est cliquable avant interaction. Livrable attendu Un script stabilisé utilisant ExpectedConditions.elementToBeClickable.

seleniumexplicit waitinteractions+1
AvancéSelenium

Corriger un test Selenium instable à cause d’une attente implicite mal utilisée

Contexte Un test Selenium automatise la recherche d’un produit. Après saisie du mot-clé, les résultats sont chargés dynamiquement. Le Problème Le script utilise uniquement une attente implicite globale : driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2)); driver.findElement(By.id("search")).sendKeys("Laptop"); driver.findElement(By.id("submit")).click(); driver.findElement(By.className("result-item")).click(); Le test échoue parfois car les résultats ne sont pas encore visibles. Contraintes Remplacer la stratégie d’attente implicite par une attente explicite ciblée sur l’apparition des résultats. Livrable attendu Un script stabilisé utilisant WebDriverWait pour garantir la présence ou la visibilité des éléments avant interaction.

seleniumwebdriverwaitdynamic content+1
AvancéSelenium

Mettre en place une structure Page Object simple

Contexte Les tests Selenium deviennent difficiles à maintenir car les sélecteurs sont dispersés dans le code. Le Problème Il faut restructurer le test de connexion en utilisant le pattern Page Object. Contraintes Créer une classe LoginPage contenant les éléments et actions (saisir email, mot de passe, cliquer). Adapter le test pour utiliser cette classe. Livrable attendu Une structure Page Object simple améliorant la lisibilité et la maintenabilité des tests.

seleniumpage objectdesign pattern+1
ExpertSelenium

Automatiser un scénario complexe avec authentification multi-facteurs

Contexte Une application nécessite une authentification en deux étapes : mot de passe puis code OTP affiché dynamiquement. Le Problème Le test doit gérer la saisie du mot de passe, attendre l’apparition du champ OTP et saisir un code simulé. Contraintes Mettre en place des attentes explicites pour chaque étape. Vérifier la redirection vers le tableau de bord uniquement après validation complète. Livrable attendu Un script Selenium structuré capable de gérer un flux d’authentification multi-étapes de manière fiable.

seleniummfaexplicit wait+2
ExpertSelenium

Automatiser un scénario complexe de glisser-déposer avec validation métier

Contexte Une application propose une interface drag and drop pour organiser des éléments dans des colonnes. Le Problème Le test doit déplacer un élément d’une colonne à une autre et vérifier que la modification est persistée après rechargement. Contraintes Utiliser la classe Actions pour réaliser le glisser-déposer. Vérifier l’état avant et après rechargement de la page. Livrable attendu Un script Selenium avancé validant le comportement fonctionnel et la persistance du drag and drop.

seleniumdrag and dropactions class+2
ExpertSelenium

Automatiser un test avec interception réseau simulée

Contexte Une page affiche un message différent selon la réponse d’une requête API. Le Problème Le test doit simuler un scénario où l’API retourne une erreur 500 pour vérifier l’affichage d’un message alternatif. Contraintes Utiliser les capacités avancées du navigateur ou un proxy intégré pour intercepter ou simuler la réponse réseau. Vérifier le comportement visible côté utilisateur. Livrable attendu Un test Selenium avancé validant le comportement de l’interface face à une erreur backend.

seleniumnetwork interceptionapi testing+2
ExpertSelenium

Automatiser un test cross-browser avec configuration avancée des capacités

Contexte La suite de tests doit s’exécuter sur Chrome, Firefox et Edge avec configuration spécifique pour chaque navigateur. Le Problème Il faut paramétrer dynamiquement les DesiredCapabilities ou Options selon le navigateur cible. Contraintes Mettre en place une фабrique de WebDriver configurable via paramètre externe. Garantir la compatibilité des tests sur les trois navigateurs. Livrable attendu Une configuration Selenium avancée permettant l’exécution cross-browser contrôlée.

seleniumcross browserwebdriver factory+2
ExpertSelenium

Corriger un test Selenium dépendant d’un état session partagé

Contexte Plusieurs tests partagent la même session utilisateur active. Le Problème Un test modifie l’état de session, impactant les suivants et provoquant des résultats non déterministes. Contraintes Mettre en place une stratégie d’isolation : création et fermeture de session par test ou réinitialisation contrôlée de l’état. Livrable attendu Une suite de tests Selenium stable garantissant l’indépendance de chaque scénario.

seleniumsession managementtest isolation+2
ExpertSelenium

Corriger un test Selenium échouant à cause d’animations CSS complexes

Contexte Une interface utilise des animations CSS pour afficher des modales. Le Problème Le script clique immédiatement sur un bouton interne alors que la modale n’est pas encore totalement visible, provoquant une exception. Contraintes Mettre en place une attente explicite basée sur la visibilité complète ou la suppression d’une classe CSS indiquant l’animation active. Livrable attendu Un test Selenium stabilisé face aux animations dynamiques.

seleniumcss animationexplicit wait+2
ExpertSelenium

Corriger un test Selenium échouant en exécution parallèle

Contexte Une suite de tests Selenium est exécutée en parallèle sur plusieurs navigateurs. Le Problème Le driver est partagé entre threads : static WebDriver driver; @BeforeAll static void setup() { driver = new ChromeDriver(); } Cela provoque des conflits et des comportements imprévisibles. Contraintes Refactorer la gestion du WebDriver pour assurer l’isolation par thread, par exemple via ThreadLocal. Livrable attendu Une configuration Selenium compatible avec l’exécution parallèle stable.

seleniumparallel executionthreadlocal+2
ExpertSelenium

Corriger un test Selenium instable dans un contexte SPA avec rafraîchissement partiel du DOM

Contexte Une application Single Page Application met à jour dynamiquement le DOM après une action utilisateur sans rechargement complet de la page. Le Problème Le script actuel : WebElement button = driver.findElement(By.id("refreshData")); button.click(); button.click(); Après le premier clic, le DOM est reconstruit et l’élément devient obsolète, provoquant une StaleElementReferenceException. Contraintes Adapter le test pour récupérer à nouveau l’élément après mise à jour du DOM et utiliser une attente explicite garantissant la stabilité. Livrable attendu Un script Selenium robuste évitant les erreurs liées aux références obsolètes dans une SPA.

seleniumstale elementspa+2
ExpertSelenium

Corriger un test Selenium sur application avec Shadow DOM

Contexte Une application moderne utilise des Web Components encapsulés dans un Shadow DOM. Le Problème Le script actuel ne parvient pas à localiser un bouton interne : driver.findElement(By.cssSelector("button.submit")).click(); L’élément est situé dans un shadowRoot. Contraintes Adapter le test pour accéder au Shadow DOM via JavascriptExecutor ou API compatible et interagir correctement avec l’élément. Livrable attendu Un script Selenium capable de manipuler des éléments dans un Shadow DOM.

seleniumshadow domjavascript executor+2
ExpertSelenium

Mettre en place un framework Page Object avec gestion centralisée des attentes

Contexte Les tests Selenium deviennent complexes et difficiles à maintenir avec de nombreuses répétitions d’attentes explicites. Le Problème Il faut structurer le projet en implémentant un framework Page Object avancé avec une couche d’abstraction pour les interactions et les attentes. Contraintes Créer une classe BasePage intégrant les méthodes d’attente communes, puis refactorer une page métier pour utiliser cette architecture. Livrable attendu Une structure maintenable améliorant la lisibilité, la robustesse et la réutilisabilité des tests.

seleniumpage objectframework design+2

Questions originales conçues par CodeDuel. CodeDuel n'est affilié à aucun éditeur ni organisme de certification cité ; les noms de certifications et les marques appartiennent à leurs titulaires et servent uniquement à indiquer le domaine couvert. Signaler un contenu

    Cas pratiques Selenium : 30 mises en situation | CodeDuel