HTMLUnitDriver in SeleniumHandleiding voor een headless browser
โก Slimme samenvatting
HtmlUnitDriver is de snelste headless implementatie van Selenium WebDriver, terwijl PhantomJS, ooit een populaire headless browser gebaseerd op GhostDriver, sinds 2018 verouderd is en nu is vervangen door headless Chrome, Firefoxen Playwright voor moderne automatiseringsworkflows.

Een headless browser is een webbrowser zonder grafische gebruikersinterface. Deze kan op de achtergrond draaien zonder dat het scherm zichtbaar is.tracHet biedt een efficiรซnte en effectieve manier om webapplicaties te testen, terwijl tijd en middelen worden bespaard. In dit artikel onderzoeken we wat een headless browser is, wanneer je headless browser-testen moet gebruiken en hoe je dit kunt uitvoeren. Selenium HtmlUnitDriver en PhantomJS.
Wat is een headless browser?
Een headless browser is een webbrowser zonder grafische gebruikersinterfaceDit programma gedraagt โโzich net als een gewone browser, maar er wordt tijdens de uitvoering geen GUI-venster weergegeven.
Enkele voorbeelden van headless browserstuurprogramma's zijn:
- HTML-eenheid
- Spook
- PhantomJS (verouderd)
- ZombieJS
- Watir-webstuurprogramma
- Chroom zonder kop
- Zonder hoofd Firefox
Wanneer moet u een headless browsertest gebruiken?
In het huidige digitale tijdperk worden webapplicaties ontworpen om compatibel te zijn met een breed scala aan apparaten en platforms. Dit vormt een uitdaging voor ontwikkelaars, die ervoor moeten zorgen dat hun applicaties naadloos werken in verschillende omgevingen. Headless browsertesten is een ideale oplossing, omdat ontwikkelaars hiermee hun webapplicaties kunnen valideren zonder grafische gebruikersinterface. Door headless browsertesten te gebruiken, kunnen ontwikkelaars snel complexe webapplicaties met veel componenten en afhankelijkheden testen, wat leidt tot snellere ontwikkeling, minder bugs en tevredener gebruikers.
Headless browsertesten met Selenium
Selenium is een krachtige tool voor headless browsertesten, waarmee ontwikkelaars geautomatiseerde tests kunnen uitvoeren zonder zichtbare gebruikersinterface. Door tests op de achtergrond uit te voeren, Selenium bespaart tijd en middelen en helpt tegelijkertijdping Identificeer problemen die mogelijk niet aan het licht komen in een traditionele, op de gebruikersinterface gebaseerde testomgeving. Dit omvat prestatie- en lay-outproblemen die pas in een headless-omgeving duidelijk worden. Het is echter belangrijk om headless-testen in balans te brengen met traditionele, op de gebruikersinterface gebaseerde tests om volledige dekking te garanderen.
Populaire voorbeelden van headless browsers
Er zijn veel headless browsers beschikbaar, elk met hun eigen kenmerken en voordelen, waardoor ze geschikt zijn voor verschillende toepassingen. We bespreken ze hieronder.
PhantomJS
Afschaffingsmelding: De actieve ontwikkeling van PhantomJS is in 2018 gestopt en het project wordt niet langer onderhouden. Nieuwe projecten zouden de voorkeur moeten geven aan headless Chrome, headless Firefoxof Toneelschrijver Voor moderne headless automatisering. Het onderstaande PhantomJS-voorbeeld is alleen ter referentie opgenomen.
PhantomJS is een headless browser die WebKit als rendering engine gebruikt en webstandaarden zoals HTML5, CSS3 en ondersteunt. JavaScript. Het kan worden gebruikt voor schermopnames en pagina-automatisering. Het is open-source en compatibel met meerdere besturingssystemen.
Voorbeeld Selenium met Headless PhantomJS erin 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()
Chroom
Chrome is de populairste browser ter wereld en biedt ook een headless-modus. Het is te gebruiken op veel platformen en ondersteunt populaire programmeertalen en frameworks. De ingebouwde debugtools en uitgebreide documentatie maken het gebruik ervan eenvoudig en zorgen ervoor dat eventuele problemen tijdens het testen snel kunnen worden opgelost.
Voorbeeld van Headless Chroom met 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 is een populaire webbrowser die ook als headless browser gebruikt kan worden voor testdoeleinden. Een voordeel van het gebruik van Firefox Een belangrijk voordeel van deze headless browser is het lichte gewicht, waardoor het een veelzijdige optie is voor testen op verschillende besturingssystemen. In combinatie met de uitgebreide documentatie en de community-ondersteuning, Firefox is een uitstekende keuze voor teams die experimenteren met headless browserautomatisering.
Voorbeeld van hoofdloos Firefox with 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()
Voordelen van headless browsertesten
- Snellere testuitvoering
- Kosteneffectief testen
- Betere testdekking
- Flexibiliteit bij het uitvoeren van tests
- Eenvoudigere integratie met CI/CD-pipelines
Nadelen van headless browsertesten
- Gebrek aan een zichtbare grafische gebruikersinterface voor handmatige inspectie.
- Foutopsporing kan lastiger zijn zonder scherm.
- Beperkte dekking van browserspecifiek gedrag
HtmlUnitDriver
HtmlUnitDriver is de meest lichtgewicht en snelste implementatie van een headless browser voor Selenium WebDriver. Het is gebaseerd op HtmlUnit en staat ook bekend als de Headless browser-stuurprogrammaHet gedraagt โโzich net als Chrome, IE of Firefox HtmlUnitDriver heeft weliswaar een driver, maar geen grafische gebruikersinterface (GUI), waardoor de testuitvoering niet op het scherm zichtbaar is. HtmlUnitDriver wordt nog steeds onderhouden en gedistribueerd via de org.seleniumhq.selenium:htmlunit3-driver Maven-artefact.
Kenmerken van HtmlUnitDriver:
- Ondersteuning voor de HTTPS- en HTTP-protocollen
- Ondersteuning voor HTML-reacties (klikken op links, formulieren verzenden, het DOM-model van het HTML-document doorlopen, en meer).
- Ondersteuning voor cookies
- Proxy server ondersteuning
- Ondersteuning voor basis- en NTLM-authenticatie
- Solid JavaScript ondersteuning
- Ondersteuning voor GET- en POST-verzendmethoden
- Mogelijkheid om de verzoekheaders aan te passen die naar de server worden verzonden
- Mogelijkheid om te bepalen of foutieve reacties van de server uitzonderingen moeten genereren of als pagina's van het juiste type moeten worden geretourneerd.
Stappen om HtmlUnitDriver te gebruiken met Selenium
Stap 1) In EclipseKopieer de volgende code. Voeg de standaard toe. Selenium Voeg de bibliotheekbestanden toe aan het project. Er zijn geen extra JAR-bestanden nodig.
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();
}
}
Stap 2) Voer de code uit. U zult zien dat er geen browser wordt gestart en dat de resultaten in de console worden weergegeven.
Voordelen van HtmlUnitDriver
- Omdat er geen grafische gebruikersinterface (GUI) wordt gebruikt, worden de tests op de achtergrond uitgevoerd zonder visuele onderbreking.
- Vergeleken met andere driver-instanties is de uitvoering sneller.
- Je kunt ook verschillende browserversies emuleren bij het uitvoeren van tests via HtmlUnitDriver.
-
Het is platformonafhankelijk en maakt het eenvoudig om meerdere tests tegelijk uit te voeren. Het is ideaal voor belasting testen.
Beperkingen:
- Het kan niet volledig nabootsen JavaScriptgedrag van elke echte browser-engine
PhantomJS
Reminder: PhantomJS is verouderd en wordt niet langer onderhouden. Gebruik voor nieuwe headless-projecten de volgende methode. Selenium met headless Chrome of FirefoxOf ga verder naar Toneelschrijver. Het onderstaande gedeelte dient alleen nog als naslagwerk voor toekomstige gebruikers.
PhantomJS is een headless browser met een JavaScript API. Deze werd van oudsher gebruikt voor het testen van websites zonder grafische interface, het benaderen en manipuleren van webpagina's, en wordt meegeleverd met de standaard DOM API.
Om PhantomJS te gebruiken met SeleniumJe hebt GhostDriver nodig. GhostDriver is een implementatie van het WebDriver Wire Protocol in platte tekst. JavaScript voor PhantomJS.
De latere versies van PhantomJS geรฏntegreerde GhostDriver, dus Het is niet nodig om het apart te installeren.
Zo werkt het systeem:
Stappen om te lopen Selenium met PhantomJS
Stap 1) Jij hebt nodig Eclipse with Selenium geรฏnstalleerd.
Stap 2) PhantomJS downloaden hier.
Stap 3) ExtracPlaats de gedownloade map in de map Program Files.
Stap 4) Download het PhantomJS-stuurprogramma van hierVoeg het JAR-bestand toe aan je project.
Stap 5) Plak de volgende code 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();
}
}
Stap 6) Voer de code uit. Je ziet de uitvoer in de console, maar er wordt geen browser geopend.
NOTITIE: Bij de eerste keer opstarten, afhankelijk van uw instellingen, kunt u een beveiligingswaarschuwing zien van Windows om PhantomJS te laten draaien. Klik Toegang toestaan.
Veel organisaties hebben PhantomJS in het verleden gebruikt voor taken zoals:
- testen zonder grafische interface
- Schermopname
- Pagina-automatisering
- Netwerk monitoring
- Het genereren van dashboardscreenshots voor hun gebruikers
- Unit tests uitvoeren via de commandoregel
- Personeelshandboeken genereren van HTML naar PDF
- In combinatie met QUnit voor de testsuite
Voor nieuw werk kunt u deze PhantomJS-gebruiksscenario's vervangen door headless Chrome, headless. Firefox, of Playwright, die voortdurend beveiligings- en weergave-updates ontvangen.






