Une plateforme low-code alliant la simplicité du no-code à la puissance du full-code 🚀
Commencez gratuitement
2 mars 2025
5
min lire

Utilisation de navigateurs sans tête avec Selenium : configuration et exemples de code

Georges Miloradovitch
Chercheur, rédacteur et intervieweur de cas d'utilisation
Table des matières

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

  • Pourquoi utiliser le mode sans tête ?
    • La vitesse: 2 à 15 fois plus rapide que les navigateurs classiques.
    • Faible utilisation des ressources : Consommation minimale de mémoire et de CPU.
    • Cas d'utilisation: Tests automatisés, scraping Web et workflows CI/CD.
  • Configuration requise :
    • Outils nécessaires: Python (v3.7+), Sélénium, pilotes de navigateur et navigateurs compatibles (Chrome v109 +, Firefox, Edge).
    • Installation: Utilisez pip install selenium et configurer le mode sans tête avec des arguments simples comme --headless=new.
  • Conseils clés pour réussir :
    • Définissez des tailles de fenêtre fixes pour des résultats cohérents.
    • Utilisez des attentes explicites pour le contenu dynamique.
    • Débogage avec captures d'écran et journaux.

Comparaison rapide

Fonctionnalité Mode sans tête Navigateur standard
Vitesse 2 à 15 fois plus rapide vitesse standard
L'utilisation des ressources Faible Haute
Commentaires visuels Aucun Interface graphique complète
Automatisation Intégration plus facile Configuration plus complexe

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

Sélénium x Python, pour automatiser le navigateur sans tête

Sélénium

Guide de configuration pour les navigateurs sans tête Selenium

Voici comment vous pouvez configurer Selenium pour l'automatisation du navigateur sans tête.

Installer les composants requis

Vous aurez besoin des composants suivants installés :

Composant Versions requises Objectif
Python 3.7 ou plus Environnement de programmation
Pilote Web Selenium Dernière version stable Cadre d'automatisation du navigateur
Pilotes de navigateur Dernière version stable Contrôleurs pour navigateurs spécifiques
Navigateurs Web Chrome (v109+ pour le mode sans tête), Firefox, Edge Navigateurs cibles pour l'automatisation

Conseil: Assurez-vous que les pilotes du navigateur correspondent aux versions de votre navigateur pour éviter les problèmes de compatibilité.

Configurer l'environnement Python

Créez un environnement Python dédié pour 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

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 comme ceci :

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, incluez 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, pensez toujours à fermer l’instance WebDriver pour libérer des ressources :

driver.quit()

Suivez ces étapes pour que votre automatisation sans tête Selenium soit opérationnelle !

sbb-itb-23997f1

Utilisation des navigateurs sans tête dans Selenium

Chrome Configuration du mode sans tête

Chrome

Pour Chrome (v109+), activez le mode headless en utilisant le --headless drapeau comme expliqué précédemment.

Firefox Configuration du mode sans tête

Firefox

Pour activer le mode headless dans Firefox avec Pilote Gecko, 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)

Edge Configuration du mode sans tête

Edge

Edge prend également en charge le mode sans tête et la configuration est 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 les navigateurs basés sur Firefox et Chromium. Il permet aux utilisateurs d'exécuter des scripts automatisés en mode headless, ce qui signifie que la fenêtre du navigateur ne sera pas visible. » - Diego Molina, Selenium

Assurez-vous d'appeler driver.quit() après vos tests pour libérer les ressources système.

Utilisez ces configurations spécifiques au navigateur ainsi que les meilleures pratiques à venir pour garantir une automatisation fluide. Restez à l'écoute pour obtenir des conseils sur l'optimisation de votre flux de travail et la résolution des problèmes courants.

Conseils et guide de résolution de problèmes

Après avoir configuré vos navigateurs sans tête, utilisez ces stratégies pour garantir une automatisation fluide et efficace.

Conseils pour réussir l'automatisation

Affinez votre processus d’automatisation avec des paramètres et des ajustements de synchronisation appropriés.

  • Définir une taille de fenêtre de navigateur fixe:Utilisez 1920x1080 pour garantir un rendu cohérent des éléments sur toutes les pages.
  • Gérer 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"))
)
  • Incorporer le défilement pour les éléments cachés:Cela est particulièrement utile pour les pages qui chargent le contenu de manière dynamique lorsque vous faites défiler.
driver.execute_script("window.scrollBy(0, 100);")

Résoudre les problèmes courants

Le mode sans tête peut parfois entraîner des problèmes tels que des échecs de détection d'éléments ou un comportement inattendu. Voici comment résoudre ces problèmes :

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

Essayez également de définir un agent utilisateur 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)

Scripts d'automatisation de débogage

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

  • Capture Captures d'écran: Enregistrez des captures d’écran aux points critiques pour identifier les problèmes visuels.
driver.save_screenshot("debug_screenshot.png")
  • Implémenter la journalisation:Ajoutez des journaux détaillés pour suivre l’exécution des scripts 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 fonction de débogage à distance de Chrome pour inspecter le navigateur pendant l'exécution.
chrome_options.add_argument("--remote-debugging-port=9222")

Meilleures pratiques de maintenance

Pour que vos tests restent fiables dans le temps :

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

Résumé

Cette section rassemble les principaux avantages de l’automatisation sans tête Selenium et fournit des étapes concrètes pour vous aider à démarrer.

Utilisations et avantages clés

L'automatisation sans tête Selenium accélère les tests - jusqu'à 15 fois plus rapide - en ignorant le rendu de l'interface graphique. Cette approche réduit la consommation de ressources et simplifie les flux de travail CI/CD.

Les navigateurs sans tête sont particulièrement utiles pour :

  • Intégration continue: Intégrez-vous facilement aux pipelines CI/CD sans avoir recours à des interfaces graphiques.
  • Efficacité des ressources:Utilisez moins de mémoire et de CPU, ce qui permet d'exécuter plusieurs tests simultanément.
  • Web Scraping: Extrayez efficacement les données des sites Web utilisant beaucoup de JavaScript.
  • Test des performances du réseau:Surveillez le comportement des applications et les temps de réponse.

Prochaines étapes

Pour profiter au maximum de ces avantages, tenez compte des recommandations suivantes :

Navigateur Idéal pour Considération clé
Chrome sans tête Automatisation générale et tests Support et compatibilité étendus
Firefox sans tête Validation multi-navigateur Forte conformité aux normes

Conseils de mise en œuvre:

  • Configurez WebDriver avec des options headless spécifiques à votre navigateur.
  • Définissez des tailles de fenêtre et des délais d'expiration appropriés.
  • Utilisez des conditions d'attente pour gérer le contenu dynamique.
  • Activer la fonctionnalité de capture d'écran à des fins de débogage.
  • Intégrez-vous aux outils CI/CD tels que Jenkins pour des flux de travail rationalisés.

« Les tests de navigateur sans tête sont utiles pour vérifier le texte, les éléments ou d'autres données statiques sur une certaine page Web. Tout comme un navigateur classique, un navigateur sans tête comprend le HTML et le CSS. Il peut également exécuter du JavaScript comme des requêtes AJAX. »

À lire également

Blogs connexes

Cas d'utilisation

Soutenu par