HTMLUnitDriver in SeleniumHeadless-Browser-Tutorial
⚡ Intelligente Zusammenfassung
HtmlUnitDriver ist die schnellste Headless-Implementierung von Selenium WebDriver, während PhantomJS, einst ein beliebter, auf GhostDriver basierender Headless-Browser, seit 2018 veraltet ist und mittlerweile durch den Headless-Browser Chrome ersetzt wurde, Firefoxund Dramatiker für moderne Automatisierungs-Workflows.

Ein Headless-Browser ist ein Webbrowser ohne grafische Benutzeroberfläche. Er kann im Hintergrund ausgeführt werden, ohne dass visuelle Reize sichtbar sind.tracEs bietet eine effiziente und effektive Möglichkeit, Webanwendungen zu testen und dabei Zeit und Ressourcen zu sparen. In diesem Artikel erfahren Sie, was ein Headless-Browser ist, wann Headless-Browser-Tests eingesetzt werden und wie sie durchgeführt werden. Selenium HtmlUnitDriver und PhantomJS.
Was ist ein Headless-Browser?
Ein Headless-Browser ist ein Webbrowser ohne grafische BenutzeroberflächeDieses Programm verhält sich wie ein normaler Browser, zeigt aber während der Ausführung kein GUI-Fenster an.
Beispiele für Treiber für Browser ohne grafische Benutzeroberfläche sind:
- HtmlEinheit
- Ghost
- PhantomJS (veraltet)
- ZombieJS
- Watir-Webtreiber
- Kopfloses Chrom
- Headless Firefox
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 Entwickler vor die Herausforderung, die reibungslose Funktion ihrer Anwendungen in unterschiedlichen Umgebungen zu gewährleisten. Headless-Browser-Testing ist hierfür eine ideale Lösung, da es Entwicklern ermöglicht, ihre Webanwendungen ohne grafische Benutzeroberfläche zu validieren. Mithilfe von Headless-Browser-Testing können Entwickler komplexe Webanwendungen mit vielen Komponenten und Abhängigkeiten schnell abdecken und so den Weg für eine schnellere Entwicklung, weniger Fehler und zufriedenere Nutzer ebnen.
Headless-Browsertests mit Selenium
Selenium ist ein leistungsstarkes Tool für Headless-Browser-Tests, mit dem Entwickler automatisierte Tests ohne sichtbare Benutzeroberfläche ausführen können. Durch die Ausführung der Tests im Hintergrund Selenium spart Zeit und Ressourcen und hilft gleichzeitigping Identifizieren Sie Probleme, die in einer herkömmlichen UI-basierten Testumgebung möglicherweise nicht erkennbar sind. Dies umfasst Leistungs- und Layoutprobleme, die erst in einer Headless-Umgebung sichtbar werden. Es ist jedoch wichtig, Headless-Tests mit herkömmlichen UI-basierten Tests zu kombinieren, um eine vollständige Testabdeckung zu gewährleisten.
Beliebte Beispiele für Headless-Browser
Es gibt zahlreiche Headless-Browser, jeder mit seinen eigenen Funktionen und Vorteilen, wodurch sie sich für unterschiedliche Anwendungsfälle eignen. Wir stellen sie im Folgenden vor.
PhantomJS
Hinweis zur Einstellung der Nutzung: Die aktive Entwicklung von PhantomJS wurde 2018 eingestellt, und das Projekt wird nicht mehr weiterentwickelt. Neue Projekte sollten Headless Chrome oder Headless-Browser bevorzugen. Firefoxden Dramatiker Für moderne, kopflose Automatisierung. Das untenstehende PhantomJS-Beispiel dient nur als Referenz.
PhantomJS ist ein Headless-Browser, der WebKit als Rendering-Engine verwendet und Webstandards wie HTML5, CSS3 und unterstützt. JavaDas Skript 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 weltweit beliebteste Browser und bietet auch einen Headless-Modus. Er ist plattformübergreifend einsetzbar und unterstützt gängige Programmiersprachen und Frameworks. Dank der integrierten Debugging-Tools und der umfassenden Dokumentation ist er einfach zu bedienen und ermöglicht die problemlose Behebung von Problemen, die während des Testens 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 auch als Headless-Browser zu Testzwecken verwendet werden kann. Ein Vorteil der Verwendung von Firefox Als Headless-Browser zeichnet er sich durch seinen geringen Ressourcenverbrauch aus, was ihn zu einer vielseitigen Option für Tests auf verschiedenen Betriebssystemen macht. Hinzu kommen die umfangreiche Dokumentation und der Community-Support. Firefox ist eine ausgezeichnete Wahl für Teams, die mit Headless-Browser-Automatisierung experimentieren.
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
- Einfachere Integration in CI/CD-Pipelines
Nachteile von Headless Browser Testing
- Fehlende grafische Benutzeroberfläche für die manuelle Inspektion
- Das Debuggen kann ohne Bildschirm schwieriger sein.
- Eingeschränkte browserspezifische Verhaltensabdeckung
HtmlUnitDriver
HtmlUnitDriver ist die schlankste und schnellste Implementierung eines Headless-Browsers für Selenium WebDriver. Er basiert auf HtmlUnit und ist auch als WebDriver bekannt. Headless-Browser-TreiberEs verhält sich wie Chrome, IE oder Firefox Der HtmlUnitDriver ist ein Treiber, der jedoch keine grafische Benutzeroberfläche besitzt, sodass die Testausführung nicht auf dem Bildschirm sichtbar ist. Er wird weiterhin gepflegt und über die Plattform verbreitet. org.seleniumhq.selenium:htmlunit3-driver Maven-Artefakt.
Funktionen des HtmlUnitDrivers:
- Unterstützung für die Protokolle HTTPS und HTTP
- Unterstützung für HTML-Reaktionen (Klicken auf Links, Absenden von Formularen, Durchlaufen des DOM-Modells des HTML-Dokuments und mehr)
- Unterstützung für Cookies
- Unterstützung für Proxyserver
- Unterstützung für Basis- und NTLM-Authentifizierung
- Solid JavaSkript Unterstützung
- Unterstützung für GET- und POST-Übermittlungsmethoden
- Möglichkeit, die an den Server gesendeten Anforderungsheader anzupassen
- Die Möglichkeit zu steuern, ob fehlerhafte Antworten vom Server Ausnahmen auslösen oder als Seiten des entsprechenden Typs zurückgegeben werden sollen.
Schritte zur Verwendung von HtmlUnitDriver mit Selenium
Schritt 1) In EclipseKopieren Sie den folgenden Code. Fügen Sie den Standard hinzu. Selenium Dem Projekt werden Bibliotheksdateien hinzugefügt. Es werden keine zusätzlichen JAR-Dateien benötigt.
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 HtmlUnit 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 HtmlUnitDrivers
- Da es keine grafische Benutzeroberfläche verwendet, laufen die Tests im Hintergrund ohne visuelle Unterbrechung.
- Im Vergleich zu anderen Treiberinstanzen ist die Ausführung schneller.
- Sie können beim Ausführen von Tests mit HtmlUnitDriver auch verschiedene Browserversionen emulieren.
-
Es ist plattformunabhängig und ermöglicht die einfache gleichzeitige Ausführung mehrerer Tests. Es ist ideal für Lastprüfung.
Einschränkungen:
- Es kann nicht vollständig nachahmen JavaSkriptverhalten jeder realen Browser-Engine
PhantomJS
Hinweise: PhantomJS ist veraltet und wird nicht mehr weiterentwickelt. Verwenden Sie für neue Headless-Projekte stattdessen PhantomJS. Selenium mit Headless Chrome oder FirefoxOder wechseln Sie zu „Playwright“. Der folgende Abschnitt dient nur noch als Referenz.
PhantomJS ist ein Headless-Browser mit einem JavaScript-API. Sie wurde ursprünglich für Headless-Website-Tests, den Zugriff auf und die Manipulation von Webseiten verwendet und ist Bestandteil der Standard-DOM-API.
Um PhantomJS zu verwenden SeleniumSie benötigen GhostDriver. GhostDriver ist eine Implementierung des WebDriver Wire Protocol in einfachem JavaSkript für PhantomJS.
Die späteren Versionen von PhantomJS integriert GhostDriver, also Eine separate Installation ist nicht erforderlich.
So funktioniert das System:
Schritte zum Ausführen Selenium mit PhantomJS
Schritt 1) Du brauchst Eclipse und Selenium installiert.
Schritt 2) Laden Sie PhantomJS herunter werden auf dieser Seite erläutert.
Schritt 3) ExtracVerschiebe den heruntergeladenen Ordner in den Ordner „Programme“.
Schritt 4) Laden Sie den PhantomJS-Treiber herunter von werden auf dieser Seite erläutertFügen Sie die JAR-Datei Ihrem Projekt hinzu.
Schritt 5) Fügen Sie den folgenden Code ein in Eclipse.
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. Die Ausgabe wird in der Konsole angezeigt, es wird jedoch kein Browser gestartet.
Anmerkungen: Beim ersten Start kann es je nach Ihren Einstellungen zu einer Sicherheitswarnung kommen. Windows Um PhantomJS auszuführen, klicken Sie hier. erlauben Zugang.
Viele Organisationen haben PhantomJS in der Vergangenheit für Aufgaben wie die folgenden verwendet:
- Headless-Test
- Bildschirmaufnahme
- Seitenautomatisierung
- Netzwerküberwachung
- Dashboard-Screenshots für ihre Benutzer rendern
- Unit-Tests über die Kommandozeile ausführen
- Erstellung von Mitarbeiterhandbüchern aus HTML in PDF
- Kombination mit QUnit für die Testsuite
Für neue Projekte ersetzen Sie diese PhantomJS-Anwendungsfälle durch Headless Chrome, Headless Firefoxoder Playwright, die fortlaufende Sicherheits- und Rendering-Updates erhalten.






