Eine Low-Code-Plattform, die die Einfachheit von No-Code mit der Leistung von Full-Code verbindet 🚀
Jetzt kostenlos starten
2. März 2025
5
min lesen

Headless-Browser mit Selenium verwenden: Setup und Codebeispiele

Georgi Miloradowitsch
Forscher, Texter und Usecase-Interviewer
Inhaltsverzeichnis

Mit Headless-Browsern können Sie automatisierte Webinteraktionen schneller ausführen, indem Sie die grafische Benutzeroberfläche überspringen. Dies macht sie ideal für Tests, Scraping und Formularautomatisierung. Folgendes müssen Sie wissen:

  • Warum den Headless-Modus verwenden?
    • Geschwindigkeit: 2–15× schneller als herkömmliche Browser.
    • Geringe Ressourcennutzung: Minimaler Speicher- und CPU-Verbrauch.
    • Anwendungsfälle: Automatisierte Tests, Web Scraping und CI/CD-Workflows.
  • Einrichtungsanforderungen:
    • Werkzeuge benötigt: Python (v3.7+), Selen, Browsertreiber und kompatible Browser (Chrome v109 +, Firefox, Marktumfeld).
    • Installation: Verwende pip install selenium und konfigurieren Sie den Headless-Modus mit einfachen Argumenten wie --headless=new.
  • Wichtige Tipps für den Erfolg:
    • Legen Sie feste Fenstergrößen fest, um konsistente Ergebnisse zu erzielen.
    • Verwenden Sie explizite Wartezeiten für dynamische Inhalte.
    • Debuggen Sie mit Screenshots und Protokollen.

Schneller Vergleich

Merkmal Kopfloser Modus Standardbrowser
Schnelligkeit 2–15× schneller Standardgeschwindigkeit
Ressourcennutzung Niedrig Hoch
Visuelles Feedback Keine Vollständige Benutzeroberfläche
Automation Einfachere Integration Komplexere Einrichtung

Headless-Browser sind leistungsstark für eine schnelle, effiziente Automatisierung. Befolgen Sie die Einrichtungsschritte und Best Practices, um Ihren Workflow zu optimieren.

Selen x Python, um Headless Browser zu automatisieren

Selen

Einrichtungshandbuch für Selenium Headless-Browser

So können Sie Selenium für die Headless-Browserautomatisierung einrichten.

Installieren der erforderlichen Komponenten

Sie müssen die folgenden Komponenten installiert haben:

Komponente Versionsanforderungen Sinn
Python 3.7 oder höher Programmierumgebung
Selenium WebDriver Neueste stabile Version Framework zur Browserautomatisierung
Browsertreiber Neueste stabile Version Controller für bestimmte Browser
Web Browsers Chrome (v109+ für Headless-Modus), Firefox, Edge Zielbrowser für die Automatisierung

TIPP: Stellen Sie sicher, dass die Browsertreiber zu Ihrer Browserversion passen, um Kompatibilitätsprobleme zu vermeiden.

Einrichten einer Python-Umgebung

Erstellen Sie eine dedizierte Python-Umgebung für Ihr Projekt:

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

„Selenium automatisiert Browser. Das ist alles!“ – selenium.dev

Sobald Ihre Umgebung bereit ist, installieren Sie die erforderlichen Python-Bibliotheken.

Erforderliche Python-Bibliotheken

Verwende pip um die erforderlichen Pakete zu installieren:

pip install selenium
pip install webdriver_manager  # Simplifies driver management

Für den Headless-Modus von Chrome (v109+) konfigurieren Sie ihn wie folgt:

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)

Fügen Sie unter Linux diese zusätzlichen Argumente ein, um häufige Probleme zu vermeiden:

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

Denken Sie abschließend immer daran, die WebDriver-Instanz zu schließen, um Ressourcen freizugeben:

driver.quit()

Befolgen Sie diese Schritte, um Ihre Selenium-Headless-Automatisierung zum Laufen zu bringen!

sbb-itb-23997f1

Headless-Browser in Selenium verwenden

Chrome Einrichten des Headless-Modus

Chrome

Aktivieren Sie für Chrome (v109+) den Headless-Modus mit dem --headless Flagge, wie zuvor erklärt.

Firefox Einrichten des Headless-Modus

Firefox

So aktivieren Sie den Headless-Modus in Firefox mit GeckoDriver, verwenden Sie den folgenden Code:

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)

Marktumfeld Einrichten des Headless-Modus

Marktumfeld

Edge unterstützt auch den Headless-Modus und die Einrichtung ist ähnlich wie bei Chrome. Hier ist ein Beispiel:

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 ist ein Ausführungsmodus für Firefox- und Chromium-basierte Browser. Er ermöglicht es Benutzern, automatisierte Skripte im Headless-Modus auszuführen, was bedeutet, dass das Browserfenster nicht sichtbar ist.“ – Diego Molina, Selenium

Rufen Sie unbedingt an driver.quit() nach Ihren Tests, um Systemressourcen freizugeben.

Verwenden Sie diese browserspezifischen Konfigurationen zusammen mit den kommenden Best Practices, um eine reibungslose Automatisierung sicherzustellen. Bleiben Sie dran für Tipps zur Optimierung Ihres Workflows und zur Lösung häufiger Probleme.

Tipps und Leitfaden zur Problemlösung

Verwenden Sie nach der Einrichtung Ihres Headless-Browsers diese Strategien, um eine reibungslose und effektive Automatisierung sicherzustellen.

Tipps für den Erfolg bei der Automatisierung

Optimieren Sie Ihren Automatisierungsprozess mit den richtigen Einstellungen und Zeitanpassungen.

  • Festlegen einer festen Browserfenstergröße: Verwenden Sie 1920 x 1080, um eine konsistente Elementdarstellung über alle Seiten hinweg sicherzustellen.
  • Behandeln Sie dynamische Inhalte mit expliziten Wartezeiten: Dadurch werden Zeitprobleme vermieden, wenn Elemente asynchron geladen werden. Hier ist ein Beispiel:
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"))
)
  • Integrieren Sie das Scrollen für versteckte Elemente: Dies ist besonders nützlich für Seiten, deren Inhalt beim Scrollen dynamisch geladen wird.
driver.execute_script("window.scrollBy(0, 100);")

Beheben Sie häufige Probleme

Der Headless-Modus kann manchmal Probleme wie Elementerkennungsfehler oder unerwartetes Verhalten verursachen. So beheben Sie diese:

  • Element nicht gefunden: Stellen Sie sicher, dass die Seite vollständig geladen wurde. Sie können dies überprüfen, indem Sie die aktuelle URL überprüfen:
current_url = driver.current_url

Versuchen Sie außerdem, einen benutzerdefinierten Benutzeragenten einzurichten oder eine Wiederholungslogik hinzuzufügen, um zeitweilige Fehler zu behandeln.

  • Klickereignisse funktionieren nicht: Wenn Standard-Klickmethoden fehlschlagen, verwenden Sie JavaScript, um die Klickaktion auszulösen:
element = driver.find_element(By.ID, "button-id")
driver.execute_script("arguments[0].click();", element)

Debuggen von Automatisierungsskripten

Wenn Headless-Skripte nicht wie erwartet funktionieren, ist Debuggen der Schlüssel. Hier sind einige Methoden zur Fehlerbehebung:

  • Screenshots erfassen: Speichern Sie an kritischen Stellen Screenshots, um visuelle Probleme zu identifizieren.
driver.save_screenshot("debug_screenshot.png")
  • Implementieren der Protokollierung: Fügen Sie detaillierte Protokolle hinzu, um die Skriptausführung zu verfolgen und Fehler zu identifizieren.
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug('Clicking element: button-1')
  • Remote-Debugging aktivieren: Verwenden Sie die Remote-Debugging-Funktion von Chrome, um den Browser während der Ausführung zu überprüfen.
chrome_options.add_argument("--remote-debugging-port=9222")

Best Practices für die Wartung

So bleiben Ihre Tests langfristig zuverlässig:

  • Speichern Sie Testdaten in externen Dateien, um Hardcoding zu vermeiden.
  • Verwenden Sie Behauptungen, um wichtige Prüfpunkte in Ihren Skripten zu überprüfen.
  • Aktualisieren Sie die Locators regelmäßig, damit sie mit den Änderungen in der Webanwendung übereinstimmen.
  • Behalten Sie eine klare und konsistente Projektstruktur bei, um Aktualisierungen und die Fehlerbehebung zu vereinfachen.

Zusammenfassung

In diesem Abschnitt werden die wichtigsten Vorteile der Headless-Automatisierung von Selenium zusammengefasst und praktische Schritte bereitgestellt, die Ihnen den Einstieg erleichtern.

Wichtige Anwendungen und Vorteile

Selenium Headless-Automatisierung beschleunigt das Testen - bis zu 15× schneller - durch Überspringen des GUI-Renderings. Dieser Ansatz reduziert den Ressourcenverbrauch und vereinfacht CI/CD-Workflows.

Headless-Browser sind besonders nützlich für:

  • Kontinuierliche Integration: Einfache Integration in CI/CD-Pipelines ohne Abhängigkeit von GUIs.
  • Ressourceneffizienz: Benötigen weniger Speicher und CPU, sodass mehrere Tests gleichzeitig ausgeführt werden können.
  • Web Scraping: Extrahieren Sie effektiv Daten aus JavaScript-lastigen Websites.
  • Testen der Netzwerkleistung: Überwachen Sie das Anwendungsverhalten und die Reaktionszeiten.

Nächste Schritte

Um diese Vorteile optimal zu nutzen, beachten Sie die folgenden Empfehlungen:

Browser Geeignet für Wichtige Überlegung
Chrom, kopflos Allgemeine Automatisierung und Tests Umfassende Unterstützung und Kompatibilität
Firefox ohne Kopf Browserübergreifende Validierung Starke Einhaltung von Standards

Tipps zur Umsetzung:

  • Konfigurieren Sie WebDriver mit Headless-Optionen, die speziell auf Ihren Browser zugeschnitten sind.
  • Stellen Sie entsprechende Fenstergrößen und Timeouts ein.
  • Verwenden Sie Wartebedingungen, um dynamische Inhalte zu verarbeiten.
  • Aktivieren Sie die Screenshot-Funktion zu Debugzwecken.
  • Integration mit CI/CD-Tools wie Jenkins für optimierte Arbeitsabläufe.

„Headless-Browsertests sind nützlich, um Text, Elemente oder andere statische Daten auf einer bestimmten Webseite zu überprüfen. Genau wie ein normaler Browser versteht ein Headless-Browser HTML und CSS. Er kann auch JavaScript wie AJAX-Anfragen ausführen.“

Ähnliche Blog-Beiträge

Verwandte Blogs

Anwendungsfall

Unterstützt von