Comme plus de 50 000 freelances, recevez des offres de mission tech à la messure de votre talent sur FreelanceRepublik.

Je m'inscris  ➔

Trouver des Freelances

Besoin d’un freelance tech pour vos projets ? Nous sélectionnons les meilleurs talents pour vous aider à accélérer votre croissance. Trouvez l'expert qui correspond à vos besoins en quelques clics.

En savoir +  ➔

Derniers articles

FreelanceRepublik

+100 missions tech
par semaine

Je m'inscris  ➔

A la recherche d'un freelance ?

Déposez gratuitement votre projet tech sur FreelanceRepublik

En savoir +  ➔
AccueilDéveloppementDéveloppeur PythonSelenium Python : le guide complet pour débuter et automatiser vos tests...

Selenium Python : le guide complet pour débuter et automatiser vos tests web

Faire dérouler une page web sans lever le petit doigt, interagir avec des formulaires comme un automate invisible, explorer le code source d’un site comme un urbaniste décrypte un plan de ville : c’est toute la promesse de Selenium lorsqu’il s’allie à Python. Outil d’automatisation avant d’être un outil de test, cette bibliothèque ouvre un champ d’action bien plus vaste que ce que les documentations laissent croire. Elle intrigue autant qu’elle intimide, surtout lorsqu’il s’agit de manipuler le web dynamique ou d’extraire des données volatiles. Cet article éclaire ses usages, dissèque son fonctionnement, et vous guide jusqu’aux usages les plus avancés !

Mais d’abord, qu’est-ce que Selenium ? 

Initialement conçu chez ThoughtWorks en 2004, Selenium voit le jour pour répondre à une problématique bien concrète : automatiser les tests fonctionnels de sites web sans intervention humaine. Développé en Java à l’origine, l’outil gagne rapidement du terrain, jusqu’à devenir un standard de fait dans les projets de tests automatisés. 

Son architecture modulaire et son ouverture à plusieurs langages — Python, JavaScript, C#, Ruby — lui confèrent une remarquable longévité.

Mais Selenium ne se limite pas à l’automatisation de tests. Il sert aussi à manipuler un navigateur comme un robot le ferait : cliquer, remplir des champs, naviguer entre des pages, capturer du contenu… bref, agir comme un utilisateur invisible, mais bien plus rapide et infaillible.

L’outil se compose de trois briques majeures, souvent confondues :

  • Selenium WebDriver : le moteur principal, qui contrôle les navigateurs via leurs API natives. C’est la pièce maîtresse de tout projet Selenium moderne.
  • Selenium IDE : une extension pour navigateur, destinée à enregistrer des scénarios simples sans écrire une ligne de code. Pratique pour prototyper, mais vite limité.
  • Selenium Grid : l’arme des grands projets. Elle permet d’exécuter des tests en parallèle, sur plusieurs machines, navigateurs et configurations.

Cas d’usages principaux

L’intérêt de Selenium réside dans sa polyvalence opérationnelle. Il s’inscrit dans plusieurs cas d’usage concrets qui répondent à des besoins réels du terrain :

  • Automatisation de tests UI : simuler des interactions sur des interfaces web, valider des parcours utilisateurs, détecter les régressions avant mise en production.
  • Web scraping avancé : interagir avec des contenus dynamiques, récupérer des données chargées en JavaScript, contourner des structures complexes ou des scrolls infinis.
  • Automatisation d’interfaces web : remplir automatiquement des formulaires, générer des comptes, valider des emails, ou automatiser des flux métier dans des outils internes.

Installer, configurer et lancer Selenium en Python

Pré-requis système et environnement

Avant d’écrire la moindre ligne de code, mieux vaut ancrer son projet dans un environnement propre et stable. Selenium fonctionne avec les versions récentes de Python, mais à partir de Python 3.8, les compatibilités deviennent plus solides, notamment avec les drivers des navigateurs récents.

Travailler dans un environnement isolé garantit la cohérence des versions, évite les conflits entre paquets, et favorise la portabilité du projet. Deux options principales :

  • venv : intégré à Python, il permet de créer un environnement léger sans dépendances parasites.
  • conda : plus complet, il offre une gestion fine des bibliothèques, notamment utiles en data science.

Créer un environnement virtuel avec venv :

python -m venv selenium_env

source selenium_env/bin/activate  # sur Mac/Linux

.\selenium_env\Scripts\activate   # sur Windows

Installation de Selenium et des WebDrivers

L’installation de Selenium passe par un simple appel à pip, le gestionnaire de paquets de Python :

pip install selenium

Mais l’installation ne suffit pas : Selenium a besoin d’un “driver” pour dialoguer avec le navigateur. Chaque navigateur dispose du sien :

  • Chrome → ChromeDriver
  • Firefox → GeckoDriver
  • Edge → msedgedriver

Pour fonctionner, ces exécutables doivent se trouver dans le même dossier que votre script, ou bien figurer dans la variable d’environnement PATH. Cette étape rebute souvent les débutants.

Premier script Selenium en Python

Une fois l’installation terminée, place à la pratique. Voici un exemple minimaliste d’automatisation avec Selenium et Chrome :

from selenium import webdriver

driver = webdriver.Chrome()                   # Lancement du navigateur

driver.get("https://freelancerepublik.com")   # Accès à une page web

driver.quit()                                 # Fermeture propre

Explorer les fonctionnalités clés de Selenium Python

Trouver et manipuler des éléments HTML

Selenium permet d’interagir directement avec les éléments d’une page HTML, de la même manière qu’un utilisateur humain. Pour cela, plusieurs méthodes de sélection existent, selon la structure du DOM :

driver.find_element_by_id("email")

driver.find_element_by_xpath("//input[@type='text']")

driver.find_element_by_css_selector(".input-class")

Une fois l’élément identifié, il devient possible de :

  • Envoyer du texte : .send_keys(« bonjour@freelance.tech »)
  • Effacer un champ : .clear()
  • Simuler un clic : .click()

Un robot Selenium peut suivre un parcours utilisateur complet, page après page :

driver.get("https://example.com")

driver.back()

driver.forward()

Chaque action déclenche une navigation réelle, utile pour simuler le comportement d’un internaute ou vérifier la cohérence d’un tunnel de conversion.

Gestion des éléments dynamiques

De nombreuses pages modernes chargent leurs éléments via JavaScript, ce qui impose une attente avant toute interaction. Selenium propose deux approches complémentaires :

  • Attente implicite : s’applique à toutes les recherches d’éléments.
  • Attente explicite : vise un élément précis jusqu’à son apparition.

Exemple avec WebDriverWait :

rom selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(

    EC.presence_of_element_located((By.ID, "content"))

)

Gestion des cookies, pop-ups, onglets et iframes

Gérer les frames et iframes

Certaines pages encapsulent du contenu dans des iframe, ce qui bloque toute interaction directe. Il faut basculer manuellement dans le bon contexte :

driver.switch_to.frame("frame_name")

driver.switch_to.default_content()

Gérer les alertes et pop-ups

Selenium détecte les alertes JavaScript natives :

alert = driver.switch_to.alert

alert.accept()  # ou alert.dismiss()

Lire ou injecter des cookies

Manipuler les cookies permet de conserver une session ou de simuler une authentification :

cookies = driver.get_cookies()

driver.add_cookie({'name': 'session', 'value': 'abc123'})

Comment automatiser des tests web avec Selenium ?

Pourquoi utiliser Selenium pour les tests UI ?

Dans un projet web, les tests unitaires vérifient le comportement de blocs isolés. Les tests d’intégration, eux, examinent l’interaction entre composants. Quant aux tests fonctionnels, ils simulent l’action d’un utilisateur réel : clics, formulaires, parcours client. C’est là que Selenium excelle.

Sa capacité à piloter un navigateur en conditions réelles en fait un allié stratégique dans les cycles de développement, en particulier pour :

  • détecter des régressions suite à une mise à jour ;
  • valider le rendu cross-browser ;
  • fiabiliser un déploiement dans une chaîne CI/CD (GitHub Actions, GitLab CI, Jenkins…).

Dès lors, intégrer Selenium dans une stratégie de test garantit bien plus qu’un simple gain de temps : c’est un levier de qualité logicielle, piloté par le comportement utilisateur.

Structurer ses tests avec unittest ou pytest

Pour industrialiser ses tests, mieux vaut abandonner les scripts “jetables” et structurer ses scénarios. Python propose deux cadres robustes :

  • unittest : inclus par défaut dans Python, il impose une architecture rigide, proche de JUnit.
  • pytest : plus souple, plus lisible, il s’intègre aisément dans des pipelines modernes.

Un test structuré avec pytest ressemble à ceci :

import pytest

from selenium import webdriver

@pytest.fixture

def driver():

    driver = webdriver.Chrome()

    yield driver

    driver.quit()

def test_homepage_title(driver):

    driver.get("https://freelancerepublik.com")

    assert "Freelance" in driver.title

Ce schéma repose sur une fixture qui initialise puis détruit la session après usage. Il favorise la réutilisabilité et évite les effets de bord.

Bonnes pratiques et pièges à éviter

L’automatisation web impose rigueur et méthode. Quelques réflexes structurants permettent d’éviter les écueils courants :

  • Découper son code en modules réutilisables (ex. : un fichier pour les pages, un pour les actions).
  • Utiliser le design pattern Page Object Model pour séparer logique métier et interactions techniques.
  • Anticiper les erreurs : pages non chargées, éléments absents, temps de réponse instables…

10 erreurs courantes en automatisation Selenium : 

  1. Oublier les temps d’attente.
  2. Coder en dur les chemins d’accès.
  3. Ne pas gérer les exceptions.
  4. Répéter du code au lieu de le factoriser.
  5. Lancer les tests sans teardown propre.
  6. Utiliser des sélecteurs fragiles (class génériques).
  7. Ignorer les logs d’erreurs.
  8. Négliger les tests multi-navigateurs.
  9. Utiliser sleep() au lieu d’attentes explicites.
  10. Ne pas tester les cas limites.

Quand préférer Selenium à BeautifulSoup ou Scrapy ?

Selenium n’est pas un outil de scraping au départ, mais il brille là où BeautifulSoup et Scrapy échouent :

  • Les pages dynamiques, construites via JavaScript.
  • Les interfaces avec scroll infini.
  • Les interactions nécessaires avant d’accéder aux données (cliquez, filtrez, chargez…).

Voici un tableau comparatif pour mieux cerner les différences :

CritèreSeleniumBeautifulSoupScrapy
Contenus dynamiques (JS)✅ Oui❌ Non⚠️ Partiellement
Vitesse⛔ Lente✅ Rapide✅ Très rapide
Interactions utilisateur✅ Avancées❌ Aucune❌ Aucune
Installation🟡 Moyenne✅ Simple🟡 Moyenne
Scalabilité❌ Limitée✅ Bonne✅ Excellente

En résumé : privilégiez Selenium pour les pages complexes et les flux d’interaction, et Scrapy ou BeautifulSoup pour les structures statiques et répétitives.

Aller plus loin avec Selenium Python

Utilisation de Selenium Grid pour les tests parallèles

Selenium Grid permet d’exécuter des tests en parallèle sur plusieurs machines, navigateurs ou systèmes d’exploitation. Il repose sur une architecture distribuée :

  • Un hub centralise les requêtes de test.
  • Des nodes exécutent les tests dans différents environnements.

Cette approche réduit considérablement le temps total d’exécution, particulièrement utile dans les projets CI/CD ou multi-navigateurs.

Exemple de configuration Dockerisée :

version: '3'

services:

  selenium-hub:

    image: selenium/hub

    ports:

      - "4444:4444"

  chrome:

    image: selenium/node-chrome

    depends_on:

      - selenium-hub

    environment:

      - HUB_HOST=selenium-hub

Intégration avec d’autres outils Python

Selenium gagne en puissance dès qu’il coopère avec d’autres bibliothèques. Voici trois intégrations fréquentes :

  • BeautifulSoup : pour parser proprement le HTML une fois chargé dynamiquement par Selenium.
  • pandas : pour structurer, nettoyer, transformer les données récupérées.
  • openpyxl : pour générer automatiquement des fichiers Excel exploitables.

Vers l’intelligence artificielle ?

Certaines entreprises vont plus loin en utilisant Selenium comme brique d’une architecture plus vaste, tournée vers l’automatisation intelligente :

  • RPA (Robotic Process Automation) : automatisation de tâches métiers (remplissage CRM, envoi de factures, relances…).
  • Couplage avec des modèles NLP ou LLM : analyser les contenus extraits, classer automatiquement, extraire des entités, résumer…

Foire aux questions (FAQ)

Selenium est-il légal pour scraper des sites ?

Oui, à condition de respecter les CGU du site, ne pas nuire à son infrastructure, et ne pas collecter de données personnelles sans consentement.

Est-ce que Selenium fonctionne sur mobile ?

Indirectement, via Appium, qui reprend les principes de Selenium pour les applications mobiles.

Quelle différence entre Chrome et Firefox en Selenium ?

Les commandes sont identiques, mais certains comportements peuvent varier selon le navigateur. ChromeDriver reste généralement plus stable.

Selenium fonctionne-t-il sans ouvrir un navigateur ?

Oui, en mode headless. Cela permet de lancer les scripts sans interface graphique, notamment sur serveur ou en pipeline CI.

X

Vous avez des besoins
en recrutement IT ?

Prenez RDV  ➔

Ces articles peuvent vous intéresser

Les 5 profils tech les plus durs à recruter en 2025 (et comment y arriver)

En 2025, la pénurie de profils tech atteint un niveau critique en France et en Europe. Data scientists, experts...

Web Scraping Python : comment extraire des données web en toute simplicité

Page source ouverte, inspecteur lancé, copier-coller à répétition… puis l’impression (désagréable !) de perdre son temps. Bonne nouvelle :...

Commandes Linux avancées : optimisez vos scripts et gagnez en productivité

Le terminal n’a ni interface ni artifice, mais il parle à ceux qui l’écoutent. Au fil des lignes, des...

Ne perdez plus de temps à prospecter en vain. Inscrivez-vous gratuitement sur FreelanceRepublik, et recevez de belles offres de missions tech. FreelanceRepublik est gratuit pour les freelances.

Je m'inscris  ➔