Latenode

Utiliser des navigateurs headless avec Selenium : configuration et exemples de code

Découvrez comment configurer et utiliser des navigateurs headless avec Selenium pour automatiser, tester et extraire des données web plus rapidement, sans interface graphique.

6 min de lecture
Fenêtre de terminal exécutant des tests Selenium dans un navigateur headless

Les navigateurs headless vous permettent d'exécuter des interactions web automatisées plus rapidement en ignorant l'interface graphique. Ils sont donc idéaux pour les tests, le scraping et l'automatisation de formulaires. Voici ce que vous devez savoir :

  • Pourquoi utiliser le mode headless ?
    • Vitesse : 2 à 15× plus rapide que les navigateurs classiques.
    • Faible consommation de ressources : utilisation minimale de la mémoire et du processeur.
    • Cas d'usage : tests automatisés, scraping web et workflows CI/CD.
  • Prérequis de configuration :
    • Outils nécessaires : Python (v3.7+), Selenium, pilotes de navigateur et navigateurs compatibles (Chrome v109+, Firefox, Edge).
    • Installation : utilisez pip install selenium et configurez le mode headless avec des arguments simples comme --headless=new.
  • Conseils essentiels pour réussir :
    • Définissez des tailles de fenêtre fixes pour obtenir des résultats cohérents.
    • Utilisez des attentes explicites pour le contenu dynamique.
    • Déboguez à l'aide de captures d'écran et de journaux.

Comparaison rapide

FonctionnalitéMode headlessNavigateur standard
Vitesse2 à 15× plus rapideVitesse standard
Consommation de ressourcesFaibleÉlevée
Retour visuelAucunInterface graphique complète
AutomatisationIntégration plus simpleConfiguration plus complexe

Les navigateurs headless sont puissants pour une automatisation rapide et efficace. Suivez les étapes de configuration et les bonnes pratiques pour simplifier votre workflow.

Selenium x Python, pour automatiser un navigateur headless

Guide de configuration des navigateurs headless avec Selenium

Voici comment configurer Selenium pour l'automatisation avec un navigateur headless.

Installer les composants requis

Vous aurez besoin des composants suivants :

ComposantExigences de versionObjectif
Python3.7 ou version ultérieureEnvironnement de programmation
Selenium WebDriverDernière version stableFramework d'automatisation de navigateur
Pilotes de navigateurDernière version stableContrôleurs pour navigateurs spécifiques
Navigateurs webChrome (v109+ pour le mode headless), Firefox, EdgeNavigateurs cibles pour l'automatisation

Conseil : assurez-vous que les pilotes de navigateur correspondent aux versions de vos navigateurs afin d'éviter les problèmes de compatibilité.

Configurer l'environnement Python

Créez un environnement Python dédié à votre projet :

python -m venv selenium_env
source selenium_env/bin/activate  # For Unix/macOS
selenium_env\Scripts\activate    # For Windows

« Selenium automatise les navigateurs. C'est tout ! » - selenium.dev [3]

Une fois votre environnement prêt, installez les bibliothèques Python nécessaires.

Bibliothèques Python requises

Utilisez pip pour installer les packages requis :

pip install selenium
pip install webdriver_manager  # Simplifies driver management

Pour le mode headless de Chrome (v109+), configurez-le ainsi :

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless=new")
driver = webdriver.Chrome(options=chrome_options)

Sous Linux, ajoutez ces arguments supplémentaires pour éviter les problèmes courants :

chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

Enfin, n'oubliez jamais de fermer l'instance WebDriver afin de libérer les ressources :

driver.quit()

Suivez ces étapes pour lancer votre automatisation headless avec Selenium !

sbb-itb-23997f1

Utiliser des navigateurs headless dans Selenium

Configuration du mode headless de Chrome

Pour Chrome (v109+), activez le mode headless à l'aide du drapeau --headless, comme expliqué précédemment.

Configuration du mode headless de Firefox

Pour activer le mode headless dans Firefox avec GeckoDriver, utilisez le code suivant :

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

firefox_options = Options()
firefox_options.add_argument("--headless")
driver = webdriver.Firefox(options=firefox_options)

Configuration du mode headless de Edge

Edge prend également en charge le mode headless, avec une configuration similaire à celle de Chrome. Voici un exemple :

from selenium import webdriver
from selenium.webdriver.edge.options import Options

edge_options = Options()
edge_options.add_argument("--headless")
driver = webdriver.Edge(options=edge_options)

« Headless est un mode d'exécution pour Firefox et les navigateurs basés sur Chromium. Il permet aux utilisateurs d'exécuter des scripts automatisés en mode headless, ce qui signifie que la fenêtre du navigateur n'est pas visible. » - Diego Molina, Selenium [1]

Veillez à appeler driver.quit() après vos tests afin de libérer les ressources système.

Utilisez ces configurations propres à chaque navigateur, ainsi que les bonnes pratiques à venir, afin de garantir une automatisation fluide. Découvrez ci-dessous des conseils pour optimiser votre workflow et résoudre les problèmes courants.

Guide de conseils et de résolution des problèmes

Après avoir configuré vos navigateurs headless, utilisez ces stratégies pour assurer une automatisation fluide et efficace.

Conseils pour réussir votre automatisation

Affinez votre processus d'automatisation grâce à des paramètres adaptés et des ajustements de synchronisation.

  • Définissez une taille de fenêtre de navigateur fixe : utilisez 1920x1080 pour garantir un rendu cohérent des éléments sur toutes les pages.
  • Gérez le contenu dynamique avec des attentes explicites : cela permet d'éviter les problèmes de synchronisation lorsque les éléments se chargent de manière asynchrone. Voici un exemple :
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "dynamic-content"))
)
  • Intégrez le défilement pour les éléments masqués : cette approche est particulièrement utile pour les pages qui chargent du contenu dynamiquement lors du défilement.
driver.execute_script("window.scrollBy(0, 100);")

Résoudre les problèmes courants

Le mode headless peut parfois entraîner des problèmes, tels que des échecs de détection d'éléments ou des comportements inattendus. Voici comment les résoudre :

  • Élément introuvable : assurez-vous que la page est entièrement chargée. Vous pouvez le vérifier en contrôlant l'URL actuelle :
current_url = driver.current_url

Essayez également de définir un user-agent personnalisé ou d'ajouter une logique de nouvelle tentative pour gérer les échecs intermittents.

  • Les événements de clic ne fonctionnent pas : si les méthodes de clic standard échouent, utilisez JavaScript pour déclencher l'action de clic :
element = driver.find_element(By.ID, "button-id")
driver.execute_script("arguments[0].click();", element)

Déboguer les scripts d'automatisation

Lorsque les scripts headless ne fonctionnent pas comme prévu, le débogage est essentiel. Voici quelques méthodes pour diagnostiquer les problèmes :

  • Capturer des captures d'écran : enregistrez des captures d'écran aux étapes critiques afin d'identifier les problèmes visuels.
driver.save_screenshot("debug_screenshot.png")
  • Mettre en place la journalisation : ajoutez des journaux détaillés pour suivre l'exécution du script et identifier les échecs.
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug('Clicking element: button-1')
  • Activer le débogage à distance : utilisez la fonctionnalité de débogage à distance de Chrome pour inspecter le navigateur pendant l'exécution.
chrome_options.add_argument("--remote-debugging-port=9222")

Bonnes pratiques de maintenance

Pour garantir la fiabilité de vos tests au fil du temps :

  • Stockez les données de test dans des fichiers externes afin d'éviter le codage en dur.
  • Utilisez des assertions pour vérifier les points de contrôle clés de vos scripts.
  • Mettez régulièrement à jour les localisateurs pour refléter les modifications de l'application web.
  • Conservez une structure de projet claire et cohérente afin de simplifier les mises à jour et le débogage.

Résumé

Cette section réunit les principaux avantages de l'automatisation headless avec Selenium et propose des étapes concrètes pour vous aider à démarrer.

Principaux usages et avantages

L'automatisation headless avec Selenium accélère les tests — jusqu'à 15× plus rapidement — en évitant le rendu de l'interface graphique. Cette approche réduit la consommation de ressources et simplifie les workflows CI/CD [2].

Les navigateurs headless sont particulièrement utiles pour :

  • Intégration continue : intégrez-les facilement dans des pipelines CI/CD sans dépendre d'interfaces graphiques.
  • Efficacité des ressources : utilisez moins de mémoire et de processeur, ce qui permet d'exécuter plusieurs tests simultanément.
  • Scraping web : extrayez efficacement des données depuis des sites web riches en JavaScript.
  • Tests de performance réseau : surveillez le comportement de l'application et les temps de réponse.

Prochaines étapes

Pour tirer pleinement parti de ces avantages, prenez en compte les recommandations suivantes :

NavigateurIdéal pourPoint clé à considérer
Chrome HeadlessAutomatisation et tests générauxLarge prise en charge et compatibilité
Firefox HeadlessValidation multi-navigateursForte conformité aux standards

Conseils de mise en œuvre :

  • Configurez WebDriver avec les options headless propres à votre navigateur.
  • Définissez des tailles de fenêtre et des délais d'attente appropriés.
  • Utilisez des conditions d'attente pour gérer le contenu dynamique.
  • Activez la fonctionnalité de capture d'écran à des fins de débogage.
  • Intégrez des outils CI/CD tels que Jenkins pour fluidifier vos workflows.

« Les tests avec un navigateur headless sont utiles pour vérifier du texte, des éléments ou d'autres données statiques sur une page web donnée. Tout comme un navigateur classique, un navigateur headless comprend le HTML et le CSS. Il peut également exécuter du JavaScript, par exemple pour des requêtes AJAX. » [4]

References

FAQ

Frequently Asked Questions

Un navigateur headless exécute des interactions web automatisées sans interface graphique. Dans Selenium, vous activez le mode headless via les options du navigateur (par exemple, --headless=new pour Chrome v109+) afin que les scripts s’exécutent plus rapidement en consommant moins de CPU et de mémoire.

Cela vous a aidé ? Partagez-le →

Écrit par

Vasiliy Datsenko

Responsable du support client

Vasiliy Datsenko est responsable du support client chez Latenode et un rédacteur en automatisation axé sur les produits. Son travail relie les conversations clients, la recherche sur l'automatisation des flux de travail, les cas d'utilisation de l'IA et la formation pratique sur les produits pour les équipes cherchant à automatiser des processus métier réels.

Profil de l'auteur →

Vérifié par

Oleg Zankov

PDG de Latenode, expert en no-code

Avec une philosophie ancrée dans l'innovation, la résolution de problèmes et l'expérience utilisateur, je me consacre à donner aux équipes les moyens de créer des intégrations sur mesure et d'automatiser les workflows avec facilité et efficacité. Fort d'une riche expérience en développement commercial, entrepreneurship technologique et développement logiciel, j'ai reconnu le besoin d'une solution d'intégration plus accessible, évolutive et adaptable. Ainsi est né Latenode.com. Grâce à notre plateforme, les entreprises peuvent exploiter la puissance de la technologie sans nécessiter de compétences approfondies en codage. Passionné par la création d'un avenir où la technologie nous sert, et non l'inverse, ma mission est de simplifier les processus complexes. Je crois en la démocratisation de la technologie et en dotant les équipes des outils nécessaires pour innover, croître et réussir dans un monde de plus en plus numérique.

Profil de l'auteur →

Continuer la lecture