HTMLUnitDriver i Selenium: Veiledning for hodeløs nettleser
⚡ Smart oppsummering
HtmlUnitDriver er den raskeste headless-implementeringen av Selenium WebDriver, mens PhantomJS, en gang en populær GhostDriver-basert headless nettleser, er utdatert siden 2018 og nå erstattet av headless Chrome, headless Firefoxog Playwright for moderne automatiseringsarbeidsflyter.

En headless browser er en nettleser uten grafisk brukergrensesnitt. Den kan kjøre i bakgrunnen uten visuelt display.tracsjoner. Den tilbyr en effektiv og virkningsfull måte å teste webapplikasjoner på, samtidig som den sparer tid og ressurser. I denne artikkelen utforsker vi hva en headless nettleser er, når man skal bruke headless nettlesertesting, og hvordan man utfører det ved hjelp av Selenium HtmlUnitDriver og PhantomJS.
Hva er en hodeløs nettleser?
En headless browser er en nettleser uten et grafisk brukergrensesnittDette programmet oppfører seg akkurat som en vanlig nettleser, men det viser ikke noe grafisk vindu under kjøring.
Noen eksempler på headless nettleserdrivere inkluderer:
- HtmlUnit
- Ghost
- PhantomJS (utdatert)
- ZombieJS
- Watir-webdriver
- Hodeløs Chrome
- Hodeløs Firefox
Når skal man bruke hodeløs nettlesertesting?
I dagens digitale tidsalder er webapplikasjoner bygget for å være kompatible med et bredt spekter av enheter og plattformer. Dette skaper en utfordring for utviklere som må sørge for at applikasjonene deres fungerer sømløst på tvers av ulike miljøer. Headless browser testing er en ideell løsning fordi den lar utviklere validere webapplikasjonene sine uten et grafisk brukergrensesnitt. Ved å bruke headless browser testing kan utviklere raskt dekke komplekse webapplikasjoner med mange komponenter og avhengigheter, noe som baner vei for raskere utvikling, færre feil og mer fornøyde brukere.
Hodeløs nettlesertesting med Selenium
Selenium er et kraftig verktøy for headless browser testing, som lar utviklere kjøre automatiserte tester uten et synlig brukergrensesnitt. Ved å kjøre tester i bakgrunnen, Selenium sparer tid og ressurser samtidig som det hjelperping identifisere problemer som kanskje ikke er synlige i et tradisjonelt brukergrensesnittbasert testmiljø. Dette inkluderer ytelses- og layoutproblemer som bare blir tydelige i en headless-setting. Det er imidlertid viktig å balansere headless-testing med tradisjonelle brukergrensesnittbaserte tester for å sikre full dekning.
Populære eksempler på hodeløse nettlesere
Mange headless-nettlesere er tilgjengelige, hver med sine egne funksjoner og fordeler, noe som gjør dem egnet for ulike brukstilfeller. Vi diskuterer dem nedenfor.
PhantomJS
Avskrivningsvarsel: Aktiv utvikling av PhantomJS stoppet i 2018, og prosjektet vedlikeholdes ikke lenger. Nye prosjekter bør foretrekke headless Chrome, headless Firefoxeller dramatiker for moderne headless automatisering. PhantomJS-eksemplet nedenfor er kun inkludert som referanse.
PhantomJS er en headless nettleser som bruker WebKit som renderingmotor og støtter webstandarder som HTML5, CSS3 og JavaSkript. Det kan brukes til skjermbilder og sideautomatisering. Det er åpen kildekode og kompatibelt med flere operativsystemer.
Eksempel Selenium med Headless PhantomJS inn 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 er den mest populære nettleseren på planeten, og tilbyr også en headless-modus. Den kan brukes på tvers av mange plattformer og støtter populære programmeringsspråk og rammeverk. De innebygde feilsøkingsverktøyene og den omfattende dokumentasjonen gjør den enkel å bruke og feilsøke eventuelle problemer som kan oppstå under testing.
Eksempel på Headless Chrome med 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 er en populær nettleser som også kan brukes som en headless nettleser for testing. En fordel med å bruke Firefox Som en headless nettleser er dens lette fotavtrykk, noe som gjør den til et allsidig alternativ for testing på forskjellige operativsystemer. Kombinert med den omfattende dokumentasjonen og fellesskapsstøtten, Firefox er et utmerket valg for team som eksperimenterer med headless nettleserautomatisering.
Eksempel på Headless Firefox med 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()
Fordeler med hodeløs nettlesertesting
- Raskere testutførelse
- Kostnadseffektiv testing
- Bedre testdekning
- Fleksibilitet i kjøreprøver
- Enklere integrering med CI/CD-pipelines
Ulemper med hodeløs nettlesertesting
- Mangel på synlig brukergrensesnitt for manuell inspeksjon
- Feilsøking kan være vanskeligere uten skjerm
- Begrenset dekning av nettleserspesifikk atferd
HtmlUnitDriver
HtmlUnitDriver er den letteste og raskeste implementeringen av en headless nettleser for Selenium WebDriver. Den er basert på HtmlUnit og er også kjent som Hodeløs nettleserdriverDen oppfører seg som Chrome, IE eller Firefox driveren, men den har ikke et grafisk brukergrensesnitt, så testkjøringen er ikke synlig på skjermen. HtmlUnitDriver vedlikeholdes fortsatt og distribueres gjennom org.seleniumhq.selenium:htmlunit3-driver Maven-artefakt.
Funksjoner i HtmlUnitDriver:
- Støtte for HTTPS- og HTTP-protokollene
- Støtte for HTML-svar (klikke på lenker, sende inn skjemaer, gå gjennom DOM-modellen til HTML-dokumentet og mer)
- Støtte for informasjonskapsler
- Støtte for proxy-server
- Støtte for grunnleggende og NTLM-autentisering
- solid JavaScript støtte
- Støtte for GET- og POST-innsendingsmetoder
- Evne til å tilpasse forespørselshodene som sendes til serveren
- Mulighet til å kontrollere om mislykkede svar fra serveren skal generere unntak eller returneres som sider av riktig type
Fremgangsmåte for å bruke HtmlUnitDriver med Selenium
Trinn 1) In Eclipse, kopier følgende kode. Legg til standardkoden Selenium bibliotekfiler til prosjektet. Ingen ekstra JAR-filer er nødvendige.
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();
}
}
Trinn 2) Kjør koden. Du vil se at ingen nettleser startes, og resultatene vises i konsollen.
Fordeler med HtmlUnitDriver
- Siden den ikke bruker noe grafisk brukergrensesnitt, kjøres testene i bakgrunnen uten visuell avbrudd.
- Sammenlignet med andre driverforekomster er kjøringen raskere
- Du kan også emulere forskjellige nettleserversjoner når du kjører tester via HtmlUnitDriver.
-
Den er plattformuavhengig og det er enkelt å kjøre flere tester samtidig. Den er ideell for lastetesting.
Begrensninger:
- Den kan ikke etterligne fullt ut JavaSkriptoppførselen til alle ekte nettlesermotorer
PhantomJS
påminnelse: PhantomJS er utdatert og vedlikeholdes ikke lenger. For nytt headless arbeid, bruk Selenium med hodeløs Chrome eller Firefox, eller flytt til Dramatiker. Avsnittet nedenfor er kun ment som referanse for eldre versjoner.
PhantomJS er en headless nettleser med en JavaSkript-API. Det ble historisk sett brukt til headless testing av nettsteder, tilgang til og manipulering av nettsider, og leveres med standard DOM API.
Å bruke PhantomJS med Selenium, du trenger GhostDriver. GhostDriver er en implementering av WebDriver Wire Protocol i vanlig JavaSkript for PhantomJS.
De senere utgivelsene av PhantomJS integrert GhostDriver, så det er ikke nødvendig å installere den separat.
Slik fungerer systemet:
Fremgangsmåte for å løpe Selenium med PhantomJS
Trinn 1) Du trenger Eclipse med Selenium installert.
Trinn 2) Last ned PhantomJS her..
Trinn 3) ExtracLegg den nedlastede mappen i Programfiler.
Trinn 4) Last ned PhantomJS-driveren fra her.Legg til JAR-filen i prosjektet ditt.
Trinn 5) Lim inn følgende kode 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();
}
}
Trinn 6) Kjør koden. Du vil se resultatet i konsollen, og ingen nettleser vil bli startet.
NOTAT: Ved første kjøring, avhengig av innstillingene dine, kan du se en sikkerhetsadvarsel fra Windows for å tillate at PhantomJS kjører. Klikk Tillat tilgang.
Mange organisasjoner har historisk sett brukt PhantomJS til oppgaver som:
- Hodeløs testing
- Skjermbilde
- Sideautomatisering
- Nettverksovervåking
- Gjengivelse av skjermbilder av dashbordet for brukerne sine
- Kjøre enhetstester på kommandolinjen
- Generering av ansatthåndbøker fra HTML til PDF
- Kombinering med QUnit for testpakken
For nytt arbeid, erstatt disse PhantomJS-brukstilfellene med headless Chrome, headless Firefox, eller Playwright, som mottar kontinuerlige sikkerhets- og gjengivelsesoppdateringer.






