Selenium

So machen Sie einen Screenshot mit Selenium

So machen Sie einen Screenshot mit Selenium
Selenium ist ein großartiges Tool für Browsertests, Webautomatisierung und Web-Scraping. Sie können Selenium auch verwenden, um Screenshots Ihrer Webseite zu erstellen. Dies ist sehr wichtig, um die Benutzeroberfläche (UI) Ihrer Website in verschiedenen Webbrowsern zu testen.

Verschiedene Webbrowser verwenden unterschiedliche Rendering-Engines zum Rendern von Webseiten. Daher wird der gleiche Frontend-Code möglicherweise nicht in allen Webbrowsern gleich gerendert. Um dieses Problem zu beheben, müssen Sie möglicherweise einige browserspezifische Frontend-Codes auf Ihrer Website hinzufügen. Dies ist jedoch nicht der einzige schwierige Teil bei der Gestaltung einer Website, die mit verschiedenen Browsern und Geräten kompatibel ist. Das manuelle Überprüfen, wie die Website in jedem Ihrer Zielbrowser aussieht, kann zeitaufwändig sein. Sie müssten alle Ihre Ziel-Webbrowser öffnen, die Webseite besuchen, warten, bis die Seite geladen ist, und die gerenderten Seiten miteinander vergleichen. Um Zeit zu sparen, können Sie mit der Selenium-Screenshot-Funktion automatisch Screenshots Ihrer Website in jedem Ihrer Zielbrowser erstellen und die Bilder selbst vergleichen. Das ist viel schneller als die manuelle Methode. In diesem Artikel erfahren Sie, wie Sie mit Selenium Screenshots von Browserfenstern erstellen.

Voraussetzungen

Um die in diesem Artikel beschriebenen Befehle und Beispiele auszuprobieren, benötigen Sie:

1) Eine auf Ihrem Computer installierte Linux-Distribution (vorzugsweise Ubuntu).
2) Python 3 auf Ihrem Computer installiert.
3) PIP 3 auf Ihrem Computer installiert.
4) Das Python-Paket virtuelle Umgebung auf Ihrem Computer installiert.
5) Auf Ihrem Computer installierte Webbrowser Mozilla Firefox und Google Chrome.
6) Kenntnisse zur Installation des Firefox Gecko-Treibers und des Chrome Web-Treibers auf Ihrem System.

Um die Anforderungen 4, 5 und 6 zu erfüllen, können Sie meinen Artikel lesen Einführung in Selenium mit Python 3 bei Linuxhint.com.

Viele weitere Artikel zu den gewünschten Themen finden Sie unter LinuxHint.com. Sehen Sie sich diese Artikel an, wenn Sie zusätzliche Hilfe benötigen.

Einrichten eines Projektverzeichnisses

Um alles organisiert zu halten, erstellen Sie das neue Projektverzeichnis Selen-Screenshot/, wie folgt:

$ mkdir -pv selenium-screenshot/images,drivers

Navigieren Sie zum Selen-Screenshot/ Projektverzeichnis wie folgt:

$ cd Selen-Screenshot/

Erstellen Sie wie folgt eine virtuelle Python-Umgebung im Projektverzeichnis:

$ virtualenv .venv

Aktivieren Sie die virtuelle Umgebung wie folgt:

$ Quelle .venv/bin/aktivieren

Installieren Sie Selenium mit PIP3 wie folgt:

$ pip3 Selen installieren

Laden Sie den erforderlichen Webtreiber herunter und installieren Sie ihn im Fahrer/ Verzeichnis des Projekts. Den Prozess des Herunterladens und Installierens von Webtreibern habe ich im Artikel erklärt Einführung in Selenium mit Python 3. Wenn Sie Hilfe zu diesem Thema benötigen, suchen Sie nach LinuxHinweis.com für diesen Artikel.

Grundlagen zum Erstellen von Screenshots mit Selenium

In diesem Abschnitt finden Sie ein sehr einfaches Beispiel für die Erstellung von Browser-Screenshots mit Selenium.

Erstellen Sie zuerst ein neues Python-Skript ex01_google-chrome.py und geben Sie die folgenden Codezeilen in das Skript ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
googleChromeOptions = webdriver.Chrom.Optionen.Optionen()
googleChromeOptionen.kopflos = wahr
googleChromeOptionen.add_argument('--window-size=1280,720')
googleChrome = Webtreiber.Chrome(executable_path="./drivers/chromedriver",
options=googleChromeOptions)
pageUrl = "https://www.w3schools.com";
Google Chrome.holen (Seiten-URL)
Google Chrome.save_screenshot('images/w3schools_google-chrome.png')
Google Chrome.schließen()

Wenn Sie fertig sind, speichern Sie die ex01_google-chrome.py Python-Skript.

Zeile 4 erzeugt ein Optionen Objekt für den Google Chrome Webbrowser.

Zeile 5 aktiviert den Headless-Modus für Google Chrome.

Zeile 6 setzt die Fenstergröße auf 1280×720 Pixel.

Zeile 8 erstellt mit dem Chrome-Treiber ein Browser-Objekt und speichert es im Google Chrome Variable.

Zeile 10 definiert a Seiten-URL Variable. Das Seiten-URL Variable enthält die URL der Webseite, die Selenium Screenshots erstellt.

Zeile 11 lädt die Seiten-URL im Browser.

Zeile 12 verwendet die save_screenshot() Methode zum Speichern eines Screenshots des Browserfensters in der Datei w3schools_google-chrome.png in dem Bilder/ Verzeichnis des Projekts.

Schließlich schließt Zeile 14 den Browser.

Führen Sie als Nächstes die ex01_google-chrome.py Python-Skript wie folgt:

$ python3 ex01_google-chrome.py

Bei erfolgreicher Ausführung des Skripts wird der Screenshot in der Bilddatei gespeichert w3schools_google-chrome.png in dem Bilder/ Verzeichnis des Projekts, wie Sie im Screenshot unten sehen können.

Um einen Screenshot derselben Website, jedoch im Firefox-Webbrowser, zu erstellen, erstellen Sie das neue Python-Skript ex01_firefox.py und geben Sie die folgenden Codezeilen in das Skript ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
firefoxOptions = Webtreiber.Feuerfuchs.Optionen.Optionen()
FirefoxOptionen.kopflos = wahr
FirefoxOptionen.add_argument('--width=1280')
FirefoxOptionen.add_argument('--height=720')
Firefox = Webtreiber.Firefox(ausführbarer_Pfad="./drivers/geckodriver", options=firefoxOptions)
pageUrl = "https://www.w3schools.com";
Feuerfuchs.holen (Seiten-URL)
Feuerfuchs.save_screenshot('images/w3schools_firefox.png')
Feuerfuchs.schließen()

Wenn Sie fertig sind, speichern Sie die ex01_firefox.py Python-Skript.

Zeile 4 erzeugt ein Optionen Objekt für den Firefox-Webbrowser.

Zeile 5 aktiviert den Headless-Modus für Firefox.

Zeile 6 setzt die Browserfensterbreite auf 1280 Pixel und Zeile 7 setzt die Browserfensterhöhe auf 720 Pixel.

Zeile 9 erstellt mit dem Firefox Gecko-Treiber ein Browser-Objekt und speichert es im it Feuerfuchs Variable.

Zeile 11 definiert a Seiten-URL Variable. Das Seiten-URL Variable enthält die URL der Webseite, die Selenium Screenshots erstellt.

Zeile 13 lädt die Seiten-URL im Browser.

Zeile 14 verwendet die save_screenshot() Methode zum Speichern eines Screenshots des Browserfensters in der Datei w3schools_firefox.png in dem Bilder/ Verzeichnis des Projekts.

Schließlich schließt Zeile 15 den Browser.

Führen Sie als Nächstes die ex01_firefox.py Python-Skript wie folgt:

$ python3 ex01_firefox.py

Nach erfolgreicher Ausführung des Skripts sollte der Screenshot in der Bilddatei gespeichert werden w3schools_firefox.png in dem Bilder/ Verzeichnis des Projekts, wie Sie im Screenshot unten sehen können.

Screenshots von verschiedenen Bildschirmauflösungen machen

In diesem Abschnitt erfahren Sie, wie Sie Screenshots derselben Webseite in verschiedenen Bildschirmauflösungen erstellen. In diesem Abschnitt verwende ich den Google Chrome-Webbrowser, aber Sie können Firefox oder einen anderen Browser für diesen Abschnitt verwenden.

Erstellen Sie zuerst das neue Python-Skript ex02.py und geben Sie die folgenden Codezeilen in das Skript ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
pageUrl = "https://www.w3schools.com/";
Auflösungen = [ '320,1080', '500,1080', '720,1080', '1366,1080', '1920,1080' ]
zur Auflösung in Auflösungen:
print("Screenshot für Auflösung %s erstellen… " % (Auflösung.ersetzen(',', 'x')))
chromeOptions = Webtreiber.ChromeOptions()
chromeOptionen.kopflos = wahr
chromeOptionen.add_argument('--window-size=' + Auflösung)
Chrome = Webtreiber.Chrome(executable_path="./drivers/chromedriver", options=chromeOptions)
Chrom.holen (Seiten-URL)
outputImage = 'images/homepage_chrome_' + Auflösung.ersetzen(',','_') + '.png'
Chrom.save_screenshot(outputImage)
Chrom.schließen()
print('Gespeichert in %s.' % (AusgabeBild))

Wenn Sie fertig sind, speichern Sie die ex02.py Python-Skript.

Zeile 4 definiert a Seiten-URL Variable, die die Webseiten-URL enthält, von der ich Screenshots in verschiedenen Bildschirmauflösungen machen möchte.

Zeile 5 definiert a Auflösungen Liste, die eine Liste der Auflösungen enthält, von denen ich Screenshots machen möchte.

Zeile 7 durchläuft jede der each Auflösungs in der Auflösungen aufführen.

Innerhalb der Schleife druckt Zeile 8 eine aussagekräftige Nachricht auf der Konsole.

Zeilen 10-15 erstellen ein Browser-Objekt mit dem Auflösung der aktuellen Schleifeniteration und speichert sie im Chrom Variable.

Zeile 17 lädt die Seiten-URL im Browser.

Zeile 19 generiert einen Bildpfad, in dem der Screenshot gespeichert wird, und speichert das Bild im AusgabeBild Variable.

Zeile 20 macht einen Screenshot des Browserfensters und speichert ihn im Pfad AusgabeBild.

Zeile 21 schließt den Browser.

Zeile 22 gibt eine aussagekräftige Nachricht auf der Konsole aus und beendet die Schleife.

Danach beginnt die Schleife erneut mit der nächsten Bildschirmauflösung (i.e., das nächste Listenelement).

Führen Sie als Nächstes die ex02.py Python-Skript wie folgt:

$ python3 ex02.py

Das Python-Skript ex02.py sollte Screenshots der angegebenen URL in jeder der gewählten Bildschirmauflösungen machen.

Screenshot von w3schools.com in 320 Pixel Breite.

Screenshot von w3schools.com in 500 Pixel Breite.

Screenshot von w3schools.com in 720 Pixel Breite.

Screenshot von w3schools.com in 1366 Pixel Breite.

Screenshot von w3schools.com in 1920 Pixel Breite.

Wenn Sie die Screenshots vergleichen, sollten Sie sehen, dass sich die Benutzeroberfläche mit der Breite des Browserfensters ändert. Mit der Selenium-Screenshot-Funktion können Sie schnell und einfach sehen, wie Ihre Website auf verschiedenen Bildschirmauflösungen aussieht.

Fazit

Dieser Artikel zeigte Ihnen einige der Grundlagen zum Erstellen von Screenshots mit Selenium und den Webtreibern für Chrome und Firefox. Der Artikel hat dir auch gezeigt, wie du Screenshots in verschiedenen Bildschirmauflösungen machst. Dies sollte Ihnen den Einstieg in die Selenium-Screenshot-Funktion erleichtern.

Battle for Wesnoth-Tutorial
The Battle for Wesnoth ist eines der beliebtesten Open-Source-Strategiespiele, die Sie derzeit spielen können. Dieses Spiel befindet sich nicht nur se...
0 A.D. Lernprogramm
Von den vielen Strategiespielen da draußen, 0 A.D. schafft es, sich trotz Open Source als umfassender Titel und sehr tiefgehendes, taktisches Spiel ab...
Unity3D-Tutorial
Einführung in Unity 3D Unity 3D ist eine leistungsstarke Engine für die Spieleentwicklung. Es ist plattformübergreifend, das heißt, Sie können Spiele ...