Je respecte toujours mes engagements
Automatisation des Tests Fonctionnels avec Selenium et Pytest : Mon Projet sur « Weather Shopper »
Dans le cadre de mon cours sur les tests logiciels, où nous avons exploré les fondamentaux et l’importance des tests, ce projet d’automatisation sur « Weather Shopper » a servi de validation finale de mes acquis. Ce document détaille l’approche que j’ai adoptée, les technologies mises en œuvre, et les solutions apportées aux défis rencontrés.
site web Cible : Weather Shopper
Objectif de Mon Projet :
L’objectif principal de ce projet était de concevoir et d’implémenter un script d’automatisation capable de valider un parcours utilisateur critique (« happy path ») sur le site Weather Shopper.
Le Scénario que j’ai Automatisé :
Mon script d’automatisation couvre le flux utilisateur suivant :
- Extraction de la Donnée Météorologique : Lecture de la température sur la page d’accueil.
- Navigation Conditionnelle : Redirection vers la catégorie de produits appropriée (Hydratants ou Écrans Solaires) en fonction de la température.
- Sélection Stratégique de Produits : Identification et ajout au panier des deux articles les moins onéreux répondant à des critères prédéfinis.
- Validation du Panier d’Achat : Vérification du nombre d’articles et de la concordance du montant total.
- Processus de Paiement Simulé : Interaction avec le module Stripe, incluant la saisie d’identifiants de carte de test.(
- Confirmation de Transaction : Validation de l’affichage du message « Payment successful ».
Technologies et Méthodologie que j’ai Employées :
Pour réaliser ce projet, j’ai utilisé les outils et techniques suivants :
- Langage de Scripting : Python 3.
- Framework d’Automatisation : Selenium WebDriver pour l’interaction avec Google Chrome.
- Framework de Test : Pytest pour la structuration, l’exécution et les assertions.
- Gestion des Pilotes : Webdriver Manager pour la gestion de ChromeDriver.
- Architecture du Code : J’ai appliqué le Page Object Model (POM) pour organiser le code, ce qui a grandement amélioré sa lisibilité et sa maintenabilité.
Défis Techniques Relevés au Cours du Projet :
Au cours de l’implémentation, j’ai été confronté à plusieurs défis techniques pour lesquels j’ai développé des solutions :
- Gestion des Iframes Stripe : J’ai mis en œuvre des stratégies de basculement de contexte Selenium pour interagir avec les éléments du module de paiement.
- Interactions avec Éléments Dynamiques : L’apparition conditionnelle du champ « ZIP Code » a nécessité une adaptation de la logique de saisie pour s’assurer que toutes les conditions préalables (numéro de carte complet) étaient remplies.
- Fiabilisation de la Saisie de Données : Pour les champs Stripe Elements, j’ai optimisé les interactions send_keys en incluant des actions comme click() et clear(), et en testant une saisie caractère par caractère pour une robustesse accrue.
- Stratégie de Localisation d’Éléments : J’ai porté une attention particulière à la création de sélecteurs (ID, XPath) stables et précis.
- Attentes Explicites : L’utilisation systématique de WebDriverWait a été cruciale pour synchroniser le script avec le chargement de la page.
Structure du Code que j’ai Mis en Place :
L’organisation du code suit le pattern POM :
- Répertoire pages/ : Contient mes classes Page Object (BasePage, HomePage, etc.).
- Répertoire tests/ :
- conftest.py : Définit ma fixture Pytest pour la gestion du WebDriver.
- test_weather_shopper.py : Contient le cas de test que j’ai développé.
Ce que ce Projet m’a Apporté :
La réalisation de ce projet d’automatisation a été une expérience très formatrice. J’ai pu concrètement appliquer les principes du Page Object Model, approfondir ma maîtrise de Selenium et Pytest, et développer des stratégies pour tester des applications web modernes avec des composants dynamiques et des iframes.
Code Source du Projet :
le code source complet de ce projet sur mon dépôt GitHub :
N’hésitez pas à me contacter pour toute question ou discussion relative à ce projet.




