HTMLUnitDriver in Selenium
Ein Headless-Browser ist ein Webbrowser ohne grafische Benutzeroberflรคche. Es kann ohne visuelle Ablenkung im Hintergrund laufen. Es bietet eine effiziente und effektive Mรถglichkeit, Webanwendungen zu testen und gleichzeitig Zeit und Ressourcen zu sparen. In diesem Tutorial erfahren Sie, was ein Headless-Browser ist, wann man Headless-Browser-Tests verwenden sollte und wie man ihn damit durchfรผhrt Selenium.
Was ist Headless-Browser?
Ein Headless-Browser ist ein Webbrowser ohne grafische Benutzeroberflรคche. Dieses Programm verhรคlt sich wie ein Browser, zeigt jedoch keine grafische Benutzeroberflรคche an.
Einige Beispiele fรผr Headless-Treiber sind:
- HtmlEinheit
- Ghost
- PhantomJS
- ZombieJS
- Watir-Webtreiber
Wann sollten Headless-Browser-Tests verwendet werden?
Im heutigen digitalen Zeitalter werden Webanwendungen so entwickelt, dass sie mit einer Vielzahl von Gerรคten und Plattformen kompatibel sind. Dies stellt fรผr Website-Entwickler oft eine Herausforderung dar, da sie sicherstellen mรผssen, dass ihre Anwendungen auf diesen Plattformen reibungslos funktionieren. Headless-Browsertests sind eine ideale Lรถsung fรผr dieses Problem, da Entwickler damit ihre Webanwendungen testen kรถnnen, ohne dass eine grafische Benutzeroberflรคche erforderlich ist. Durch die Verwendung von Headless-Browsertests kรถnnen Entwickler problemlos komplexe Webanwendungen mit mehreren Komponenten und Abhรคngigkeiten testen und so den Weg fรผr eine schnellere Entwicklung, fehlerfreien Code und zufriedene Benutzer ebnen.
Headless-Browsertests mit Selenium
Selenium ist ein leistungsstarkes Tool fรผr Headless-Browsertests, mit dem Entwickler automatisierte Tests durchfรผhren kรถnnen, ohne dass eine sichtbare Benutzeroberflรคche erforderlich ist. Durch die Ausfรผhrung von Tests im Hintergrund Selenium kann Zeit und Ressourcen sparen und gleichzeitig dabei helfen, Probleme zu identifizieren, die in einer herkรถmmlichen UI-basierten Testumgebung mรถglicherweise nicht erkennbar sind. Dazu gehรถren leistungsbezogene Probleme und Layoutprobleme, die mรถglicherweise nur in einer Headless-Umgebung sichtbar werden. Es ist jedoch wichtig, die Einschrรคnkungen des Headless-Testens im Auge zu behalten und es mit herkรถmmlichen UI-basierten Methoden in Einklang zu bringen, um eine umfassende Testabdeckung sicherzustellen.
Beliebte Beispiele fรผr Headless-Browser
Es gibt viele Headless-Browser, von denen jeder seine eigenen einzigartigen Funktionen und Vorteile hat, wodurch er fรผr verschiedene Anwendungsfรคlle geeignet ist. Wir besprechen sie unten: โ
PhantomJS
PhantomJS ist ein Headless-Browser, der WebKit als Rendering-Engine verwendet und verschiedene Webstandards wie HTML5, CSS3 und JavaSkript. Es kann fรผr Bildschirmaufnahmen und Seitenautomatisierungsaufgaben verwendet werden. Es ist Open Source und mit mehreren Betriebssystemen kompatibel.
Beispiel von Selenium mit Headless PhantomJS in Python
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Set up PhantomJS options
phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy()
phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
# Set up the PhantomJS driver
driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()
Chrome
Chrome ist der beliebteste Browser der Welt und bietet auch eine Headless-Funktion. Es ist plattformรผbergreifend einsetzbar und unterstรผtzt Programmiersprachen und Frameworks. Die integrierten Debugging-Tools und die umfangreiche Dokumentation erleichtern die Verwendung und die Behebung von Problemen, die beim Testen auftreten kรถnnen.
Beispiel fรผr Headless Chrome mit Selenium in Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument('--headless') # Run Chrome in headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# Set up the Chrome driver
driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()
Firefox
Firefox ist ein beliebter Webbrowser, der zu Testzwecken auch als Headless-Browser verwendet werden kann. Einer der Vorteile der Verwendung Firefox als Headless-Browser ist seine Leichtgewichtigkeit, was ihn zu einer vielseitigen Option fรผr Tests auf verschiedenen Betriebssystemen macht. Darรผber hinaus bietet er mit seiner umfangreichen Dokumentation und Community-Unterstรผtzung Firefox ist eine ausgezeichnete Wahl fรผr diejenigen, die mit der Headless-Browser-Technologie experimentieren mรถchten.
Beispiel fรผr Headless Firefox und Selenium in Python
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument('--headless') # Run Firefox in headless mode
# Set up the Firefox driver
driver = webdriver.Firefox(options=firefox_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()
Vorteile von Headless Browser Testing
- Schnellere Testausfรผhrung
- Kostengรผnstige Tests
- Bessere Testabdeckung
- Flexibilitรคt bei der Durchfรผhrung von Tests
- Integration in CI / CD-Pipelines
Nachteile von Headless Browser Testing
- Fehlende GUI
- Schwierigkeiten beim Debuggen
- Eingeschrรคnkte Browserunterstรผtzung
HTMLUnitDriver
HTML UnitDriver ist der leichteste und am schnellsten implementierte Headless-Browser fรผr WebDriver. Es basiert auf HtmlUnit. Es ist bekannt als Headless-Browser-Treiber. Es ist dasselbe wie Chrome, IE oder FireFox Treiber, aber er verfรผgt nicht รผber eine grafische Benutzeroberflรคche, sodass man die Testausfรผhrung nicht auf dem Bildschirm sehen kann.
Funktionen des HTML-Einheitentreibers
- Unterstรผtzung fรผr die Protokolle HTTPS und HTTP
- Unterstรผtzung fรผr HTML-Antworten (Anklicken von Links, Senden von Formularen, Durchlaufen des DOM-Modells des HTML-Dokuments usw.)
- Unterstรผtzung fรผr Cookies
- Unterstรผtzung fรผr Proxyserver
- Unterstรผtzung fรผr Basis- und NTLM-Authentifizierung
- Ausgezeichnet JavaSkript Unterstรผtzung
- Unterstรผtzung fรผr die รbermittlungsmethoden GET und POST
- Mรถglichkeit, die an den Server gesendeten Anforderungsheader anzupassen
- Mรถglichkeit zu bestimmen, ob fehlgeschlagene Antworten vom Server Ausnahmen auslรถsen oder als Seiten des entsprechenden Typs zurรผckgegeben werden sollen
Schritte zur Verwendung des HTMLUnit-Treibers mit Selenium
Schritt 1) In Eclipse, kopieren Sie den folgenden Code. Fรผgen Sie dem Projekt die Standard-Selenium-Bibliotheksdateien hinzu. Es sind keine zusรคtzlichen JAR-Dateien erforderlich.
package htmldriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class htmlUnitYest {
public static void main(String[] args) {
// Creating a new instance of the HTML unit driver
WebDriver driver = new HtmlUnitDriver();
// Navigate to Google
driver.get("http://www.google.com");
// Locate the searchbox using its name
WebElement element = driver.findElement(By.name("q"));
// Enter a search query
element.sendKeys("Guru99");
// Submit the query. Webdriver searches for the form using the text input element automatically
// No need to locate/find the submit button
element.submit();
// This code will print the page title
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
}
Schritt 2) Fรผhren Sie den Code aus. Sie werden feststellen, dass kein Browser gestartet wird und die Ergebnisse in der Konsole angezeigt werden.
Vorteile des HTML-Einheitentreibers:
- Da zum Testen keine grafische Benutzeroberflรคche verwendet wird, werden Ihre Tests ohne visuelle Unterbrechung im Hintergrund ausgefรผhrt
- Im Vergleich zu allen anderen Instanzen ist die Ausfรผhrung schneller
- Um Ihre Tests รผber den HtmlUnit-Treiber auszufรผhren, kรถnnen Sie auch andere Browserversionen auswรคhlen
-
Es ist plattformunabhรคngig und einfacher, mehrere Tests gleichzeitig auszufรผhren. Ideal fรผr Load Testing.
Einschrรคnkungen:
- Es kann keine anderen Browser emulieren JavaSkriptverhalten
PhantomJS
PhantomJS ist ein Headless-Browser mit JavaSkript-API. Es ist eine optimale Lรถsung fรผr Headless-Website-Tests, den Zugriff auf und die Bearbeitung von Webseiten und wird mit der Standard-DOM-API geliefert.
Um PhantomJS mit Seleniun verwenden zu kรถnnen, muss man GhostDriver verwenden. GhostDriver ist eine Implementierung des Webdriver Wire-Protokolls in einfachem JS fรผr PhantomJS.
Die neueste Version von PhatomJS hat integriert GhostDriver und Es ist nicht erforderlich, es separat zu installieren.
So funktioniert das System:
Schritte zum Ausfรผhren Selenium mit PhatomJS
Schritt 1) Du brauchst Eclipse und Selenium installiert
Schritt 2) Laden Sie PhantomJS herunter werden auf dieser Seite erlรคutert
Schritt 3) Extrahieren Sie den heruntergeladenen Ordner in โProgrammeโ.
Schritt 4) Laden Sie den PhantomJS-Treiber herunter von werden auf dieser Seite erlรคutert. Fรผgen Sie das Glas Ihrem Projekt hinzu
Schritt 5) Fรผgen Sie den folgenden Code in Eclipse ein
package htmldriver;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
public class phantom {
public static void main(String[] args) {
File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");
System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
WebDriver driver = new PhantomJSDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Guru99");
element.submit();
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
}
Schritt 6) Fรผhren Sie den Code aus. Sie werden feststellen, dass die Ausgabe in der Konsole angezeigt wird und kein Browser gestartet wird.
HINWEIS: Beim ersten Start erhalten Sie je nach Ihren Einstellungen mรถglicherweise eine Sicherheitswarnung von Windows um die Ausfรผhrung von PhantomJS zu ermรถglichen. Klicken Sie auf Zugriff zulassen.
Viele Organisationen nutzen Phantom.JS fรผr verschiedene Zwecke, zum Beispiel
- Headless-Tests
- Screen Capture
- Seitenautomatisierung
- Network Monitoring
- Um Dashboard-Screenshots fรผr ihre Benutzer zu rendern
- Um Unit-Tests auf der Befehlszeile auszufรผhren
- Generieren von Mitarbeiterhandbรผchern von HTML nach PDF
- Kombiniert mit QUnit fรผr die Testsuite
Zusammenfassung
Zum schnellen Testen der Anwendung in verschiedenen Browsern und ohne visuelle Unterbrechung, Headless-Browser Tests wird verwendet. Aufgrund ihrer Geschwindigkeit, Genauigkeit und leicht zugรคnglichen Funktionen werden HTML-Unit-Treiber und PhantomJS fรผr Headless-Browser-Automatisierungstests immer beliebter. Indem Sie einige einfache Schritte befolgen, erfahren Sie, wie einfach diese Tools in andere Tools integriert werden kรถnnen und den Testcode ausfรผhren kรถnnen.






