Selenium est un outil populaire utilisé pour automatiser les tests de navigation web. Il permet de simuler l’interaction d’un utilisateur avec une application web afin de vérifier que les fonctionnalités et les comportements sont conformes aux attentes. Vous pouvez l’utiliser pour tester des applications web sur différents navigateurs (comme Chrome, Firefox, Safari, etc.) en simulant des actions telles que le clic sur des boutons, la saisie de texte dans des formulaires, ou la navigation entre différentes pages.
Voici un guide détaillé pour commencer à utiliser Selenium pour automatiser des tests web.
1. Installer Selenium
Avant de commencer à écrire des tests avec Selenium, vous devez l’installer dans votre environnement de développement.
a. Installer Selenium avec Python
Selenium peut être installé via pip, le gestionnaire de paquets de Python. Exécutez la commande suivante pour installer Selenium :
bashCopierModifierpip install selenium
b. Télécharger un WebDriver
Selenium nécessite un « WebDriver » pour interagir avec les navigateurs. Selon le navigateur que vous souhaitez utiliser pour vos tests, vous devrez télécharger le WebDriver correspondant :
- ChromeDriver pour Google Chrome
- GeckoDriver pour Mozilla Firefox
- SafariDriver pour Safari (uniquement sur macOS)
- EdgeDriver pour Microsoft Edge
Pour Google Chrome, par exemple, vous pouvez télécharger ChromeDriver à partir de ce lien : ChromeDriver Downloads.
Assurez-vous que la version de votre WebDriver correspond à la version du navigateur que vous utilisez. Une fois téléchargé, placez-le dans un répertoire accessible par votre script.
2. Créer un premier test avec Selenium
Une fois Selenium installé et le WebDriver configuré, vous pouvez commencer à écrire des scripts pour automatiser des tests web. Nous allons écrire un test simple qui ouvre un site web et vérifie son titre.
Exemple de test simple en Python avec Selenium
pythonCopierModifierfrom selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# Configurer le WebDriver (ici, pour Google Chrome)
driver = webdriver.Chrome(executable_path='/path/to/chromedriver') # Remplacez le chemin
# Ouvrir une page web
driver.get("https://www.example.com")
# Vérifier le titre de la page
assert "Example Domain" in driver.title
# Trouver un élément par son sélecteur et effectuer une action
element = driver.find_element(By.XPATH, "//h1")
print(element.text) # Affiche le texte de l'élément h1
# Fermer le navigateur
driver.quit()
Explication du script :
- Import des modules Selenium : Vous importez les classes nécessaires de Selenium, telles que
webdriver,By, etKeys. - Initialisation du WebDriver : Vous initialisez un objet
webdriver.Chromequi lance une instance de Google Chrome (en fonction de votre WebDriver configuré). - Navigation vers une URL :
driver.get()permet de charger une page web spécifique. - Assertion sur le titre de la page : Vous pouvez vérifier si le titre de la page contient un texte spécifique avec
assert. - Interaction avec un élément : Ici, nous recherchons un élément de la page avec
find_elementen utilisant un sélecteur XPath, et nous imprimons son texte. - Fermeture du navigateur : Après l’exécution du test, la méthode
quit()ferme le navigateur.
3. Interagir avec des éléments de la page
Selenium permet d’interagir avec différents éléments de la page, comme des boutons, des champs de saisie, des liens, etc. Voici quelques actions courantes :
a. Saisie de texte dans un champ de formulaire
pythonCopierModifier# Trouver un champ de saisie par son nom
search_box = driver.find_element(By.NAME, "q")
# Saisir du texte dans le champ
search_box.send_keys("Selenium WebDriver")
# Soumettre le formulaire
search_box.send_keys(Keys.RETURN)
b. Cliquer sur un bouton
pythonCopierModifier# Trouver un bouton par son ID
submit_button = driver.find_element(By.ID, "submit")
# Cliquer sur le bouton
submit_button.click()
c. Vérification de la présence d’un élément
pythonCopierModifier# Vérifier si un élément est présent sur la page
try:
element = driver.find_element(By.XPATH, "//button[@id='submit']")
print("Le bouton est présent.")
except:
print("Le bouton n'est pas trouvé.")
4. Gérer les fenêtres et les onglets du navigateur
Selenium permet de gérer les fenêtres et les onglets du navigateur. Vous pouvez changer de fenêtre, fermer une fenêtre ou obtenir le titre d’une fenêtre.
a. Changer de fenêtre
pythonCopierModifier# Ouvrir une nouvelle fenêtre
driver.execute_script("window.open('http://www.example.com');")
# Changer d'onglet
driver.switch_to.window(driver.window_handles[1])
# Faire une action sur la nouvelle fenêtre
driver.get("http://www.example.com")
b. Fermer une fenêtre
pythonCopierModifier# Fermer la fenêtre actuelle
driver.close()
# Revenir à l'onglet précédent
driver.switch_to.window(driver.window_handles[0])
5. Gérer les alertes JavaScript
Les alertes JavaScript (comme les popups) peuvent être gérées facilement avec Selenium.
pythonCopierModifier# Accepter une alerte
alert = driver.switch_to.alert
alert.accept()
# Refuser une alerte
alert.dismiss()
# Obtenir le texte d'une alerte
alert_text = alert.text
print(alert_text)
6. Attendre que les éléments soient présents
Parfois, vous devez attendre qu’un élément soit présent avant d’interagir avec lui (par exemple, si la page met du temps à se charger). Selenium offre différentes façons de gérer les attentes.
a. Utiliser WebDriverWait
pythonCopierModifierfrom selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# Attendre que l'élément soit visible
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, "submit"))
)
Explication :
- WebDriverWait : Cette classe permet d’attendre un certain temps (ici 10 secondes) jusqu’à ce qu’une condition soit remplie (dans ce cas, l’élément avec l’ID
submitsoit visible). - ExpectedConditions : Cette bibliothèque contient des méthodes courantes pour attendre certaines conditions sur les éléments, comme la visibilité ou la cliquabilité.
7. Exécuter des tests avec un framework de test
Pour automatiser et organiser vos tests, vous pouvez utiliser Selenium avec des frameworks de test comme unittest (intégré à Python), pytest, ou nose.
Exemple avec unittest :
pythonCopierModifierimport unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestWebsite(unittest.TestCase):
def setUp(self):
# Initialiser le WebDriver
self.driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
def test_title(self):
self.driver.get("https://www.example.com")
self.assertIn("Example Domain", self.driver.title)
def tearDown(self):
# Fermer le navigateur
self.driver.quit()
if __name__ == "__main__":
unittest.main()
Explication :
setUp(): Cette méthode est appelée avant chaque test pour initialiser les prérequis (par exemple, ouvrir le navigateur).tearDown(): Cette méthode est appelée après chaque test pour nettoyer (par exemple, fermer le navigateur).- Tests unitaires : Vous pouvez définir plusieurs tests dans une même classe et les exécuter tous avec
unittest.main().
Conclusion
Selenium est un outil très puissant pour automatiser les tests web. En suivant ce guide, vous pouvez commencer à créer des scripts pour tester différentes fonctionnalités de vos applications web. L’utilisation d’attentes, la gestion des fenêtres et des alertes, ainsi que l’intégration avec des frameworks de test, vous permettent d’écrire des tests robustes et réutilisables.

















