Zum Inhalt

So machen Sie Screenshots mit Selenium

Selenium ist ein beliebtes Browser-Automatisierungstool, das zum Web-Scraping, Testen und mehr verwendet wird. Eine nützliche Funktion ist die Möglichkeit, während der Automatisierung Screenshots von Webseiten zu erstellen. Hier erfahren Sie ausführlich, wie Sie mit Selenium in Python ganzseitige Screenshots und Screenshots auf Elementebene erstellen.

Einführung in das Erstellen von Screenshots mit Selenium

Zu den Hauptgründen, warum Sie möglicherweise Screenshots mit Selenium machen möchten, gehören:

  • Speichern von Kopien von Webseiten, die Sie gescraped oder mit denen Sie interagiert haben, zum Zwecke der Fehlerbehebung oder Aufzeichnung
  • Erfassen dynamischer Inhalte wie Datums-/Uhrzeitinformationen oder Anzeigen zur späteren Analyse
  • Überprüfung von Layoutproblemen über Browser und Geräte hinweg
  • Dokumentieren von Workflow-Schritten und -Zuständen in automatisierten Tests
  • Machen Sie Screenshots von Captcha-Bildern, um sie automatisiert zu lösen

Selenium unterstützt das Erstellen von Screenshots sowohl von vollständigen Webseiten als auch von bestimmten Elementen auf einer Seite. Dies bietet viel Flexibilität, um genau das zu erfassen, was Sie benötigen.

Selenium einrichten und einen Browser öffnen

Um zu beginnen, müssen wir zunächst Selenium importieren und ein WebDriver-Objekt instanziieren, um den Browser zu steuern. Das folgende Beispiel zeigt das Öffnen von Chrome:

from selenium import webdriver

driver = webdriver.Chrome()

Andere Browser wie Firefox und Edge funktionieren ähnlich. Wenn das Treiberobjekt bereit ist, können wir nun zu einer Webseite navigieren, um einen Screenshot zu machen:

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

Ganzseitige Screenshots erstellen

Der einfachste Weg, einen Screenshot des gesamten Browserfensterinhalts zu erstellen, ist mit save_screenshot().

Übergeben Sie einen Dateipfad, um das Bild direkt auf der Festplatte zu speichern:

driver.save_screenshot(‘example_screenshot.png‘)

Alternativ können Sie den Screenshot als speicherinterne PNG-Bytes oder als Base64-codierte Zeichenfolge abrufen:

screenshot_png = driver.get_screenshot_as_png()
screenshot_b64 = driver.get_screenshot_as_base64() 

Dies ermöglicht beispielsweise das Speichern des Screenshots in einer Datenbank oder den Versand über HTTP.

Erstellen von Element-Screenshots

Um Screenshots eines bestimmten Elements auf der Seite statt des gesamten Bildschirms zu erstellen, müssen Sie das Element zunächst mithilfe eines Locators wie CSS-Selektor oder XPath finden:

element = driver.find_element(By.ID, ‘main-content‘)

Dann ruf an .screenshot() auf dem WebElement, um nur diesen Teil der Seite zu erfassen:

element_shot = element.screenshot(‘element.png‘)

Genau wie bei vollständigen Screenshots können Sie auch die Bytes oder den Base64-String abrufen.

Tipps für zuverlässige Screenshots

Hier sind einige Tipps zum Erstellen genauer und nützlicher Screenshots mit Selenium:

  • Warten Sie, bis die Seiten vollständig geladen sind, bevor Sie Screenshots erstellen, um zu vermeiden, dass Zustände während des Ladevorgangs erfasst werden.
  • Scrollen Sie bei Bedarf durch Elemente, bevor Sie Screenshots machen.
  • Achten Sie auf Werbung und dynamische Inhalte, die sich zwischen den Aufnahmen ändern.
  • Machen Sie mobile Screenshots, indem Sie die Größe des Browserfensters ändern oder die mobile Emulation verwenden.
  • Headless-Browser wie PhantomJS können Screenshots erstellen, aber möglicherweise fehlen einige Inhalte.

Anwendungsfälle für Selenium-Screenshots

Einige Beispiele, wie Sie Selenium-Screenshots in Ihren Web-Scraping- und Automatisierungsprojekten verwenden können:

  • Debuggen und Protokollieren – Vergleichen Sie Vorher- und Nachher-Screenshots, um Änderungen zu sehen.
  • Erfassen generierter oder zeitkritischer Inhalte wie Dashboards.
  • Automatisierte visuelle Regressionstests für alle Browserversionen.
  • Dokumentation von Arbeitsabläufen und Zustand während der Testläufe.
  • Screenshots von Captchas erstellen, um sie in einen Lösungsdienst einzuspeisen.
  • Archivieren von Scraped-Seitendaten zusammen mit Screenshots.

Zusammenfassung und nächste Schritte

Die Schritte zum Erstellen von Screenshots mit Selenium in Python sind:

  1. Importieren Sie Selenium und erstellen Sie einen WebDriver
  2. Navigieren Sie zur Zielwebseite
  3. Telefon save_screenshot() um eine ganze Seite zu erfassen
  4. Oder finden Sie ein Element und rufen Sie an screenshot() um nur dieses Element zu erfassen
  5. Passen Sie nach Bedarf für dynamische Seiten und Mobilgeräte an

Ich hoffe, dieser Leitfaden bietet Ihnen eine gute Grundlage für die Erstellung von Screenshots in Ihrem eigenen Selenium-Projekt! Die Möglichkeiten sind endlos.

Stichworte:

Mitreden

E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind MIT * gekennzeichnet. *