HTMLUnitDriver i SeleniumVejledning til headless browser
โก Smart opsummering
HtmlUnitDriver er den hurtigste headless implementering af Selenium WebDriver, mens PhantomJS, engang en populรฆr GhostDriver-baseret headless browser, er udfaset siden 2018 og nu erstattet af headless Chrome, headless Firefoxog Playwright til moderne automatiseringsarbejdsgange.

En headless browser er en webbrowser uden en grafisk brugergrรฆnseflade. Den kan kรธre i baggrunden uden visuel visning.tractioner. Det tilbyder en effektiv og virkningsfuld mรฅde at teste webapplikationer pรฅ, samtidig med at det sparer tid og ressourcer. I denne artikel undersรธger vi, hvad en headless browser er, hvornรฅr man skal bruge headless browsertestning, og hvordan man udfรธrer det ved hjรฆlp af Selenium HtmlUnitDriver og PhantomJS.
Hvad er en headless browser?
En headless browser er en webbrowser uden en grafisk brugergrรฆnsefladeDette program opfรธrer sig prรฆcis som en almindelig browser, men det viser ikke noget GUI-vindue under udfรธrelsen.
Nogle eksempler pรฅ headless browserdrivere inkluderer:
- HtmlUnit
- Ghost
- PhantomJS (udfaset)
- ZombieJS
- Watir-webdriver
- Krom uden hoved
- Hovedlรธse Firefox
Hvornรฅr skal man bruge Headless Browser Testing?
I dagens digitale tidsalder er webapplikationer bygget til at vรฆre kompatible med en bred vifte af enheder og platforme. Dette skaber en udfordring for udviklere, der skal sikre, at deres applikationer fungerer problemfrit pรฅ tvรฆrs af forskellige miljรธer. Headless browsertestning er en ideel lรธsning, fordi det giver udviklere mulighed for at validere deres webapplikationer uden en grafisk brugergrรฆnseflade. Ved at bruge headless browsertestning kan udviklere hurtigt dรฆkke komplekse webapplikationer med mange komponenter og afhรฆngigheder, hvilket baner vejen for hurtigere udvikling, fรฆrre fejl og gladere brugere.
Hovedlรธs browsertest med Selenium
Selenium er et kraftfuldt vรฆrktรธj til headless browsertestning, der giver udviklere mulighed for at kรธre automatiserede tests uden en synlig brugergrรฆnseflade. Ved at kรธre tests i baggrunden, Selenium sparer tid og ressourcer, samtidig med at det hjรฆlperping Identificer problemer, der muligvis ikke er synlige i et traditionelt UI-baseret testmiljรธ. Dette inkluderer ydeevne- og layoutproblemer, der kun bliver tydelige i en headless-setting. Det er dog vigtigt at balancere headless-testning med traditionelle UI-baserede tests for at sikre fuld dรฆkning.
Populรฆre eksempler pรฅ hovedlรธse browsere
Der findes mange headless-browsere, hver med sine egne funktioner og fordele, hvilket gรธr dem velegnede til forskellige anvendelsesscenarier. Vi diskuterer dem nedenfor.
PhantomJS
Udfasningsmeddelelse: Den aktive udvikling af PhantomJS stoppede i 2018, og projektet vedligeholdes ikke lรฆngere. Nye projekter bรธr foretrรฆkke headless Chrome, headless Firefox eller dramatiker til moderne headless automatisering. PhantomJS-eksemplet nedenfor er kun inkluderet som reference.
PhantomJS er en headless browser, der bruger WebKit som rendering engine og understรธtter webstandarder som HTML5, CSS3 og ... JavaScript. Det kan bruges til skรฆrmoptagelse og sideautomatiseringsopgaver. Det er open source og er kompatibelt med flere operativsystemer.
Eksempel Selenium med Headless PhantomJS i 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 browser pรฅ planeten og tilbyder ogsรฅ en headless-tilstand. Den kan bruges pรฅ tvรฆrs af mange platforme og understรธtter populรฆre programmeringssprog og frameworks. Dens indbyggede fejlfindingsvรฆrktรธjer og omfattende dokumentation gรธr den nem at bruge og fejlfinde eventuelle problemer, der mรฅtte opstรฅ under testning.
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 webbrowser, der ogsรฅ kan bruges som en headless browser til test. En fordel ved at bruge Firefox Som en headless browser er dens lette stรธrrelse, hvilket gรธr den til en alsidig mulighed for test pรฅ forskellige operativsystemer. Kombineret med dens omfattende dokumentation og fรฆllesskabssupport, Firefox er et fremragende valg for teams, der eksperimenterer med headless browserautomatisering.
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()
Fordele ved Headless Browser Testing
- Hurtigere testudfรธrelse
- Omkostningseffektiv test
- Bedre testdรฆkning
- Fleksibilitet i at kรธre test
- Nemmere integration med CI/CD-pipelines
Ulemper ved Headless Browser Testing
- Mangel pรฅ synlig brugergrรฆnseflade til manuel inspektion
- Fejlfinding kan vรฆre svรฆrere uden en skรฆrm
- Begrรฆnset dรฆkning af browserspecifik adfรฆrd
HtmlUnitDriver
HtmlUnitDriver er den letteste og hurtigste implementering af en headless browser til Selenium WebDriver. Den er baseret pรฅ HtmlUnit og er ogsรฅ kendt som Hovedlรธs browser driverDen opfรธrer sig ligesom Chrome, IE eller Firefox driver, men den har ikke en GUI, sรฅ testudfรธrelsen er ikke synlig pรฅ skรฆrmen. HtmlUnitDriver vedligeholdes stadig og distribueres via org.seleniumhq.selenium:htmlunit3-driver Maven-artefakt.
Funktioner i HtmlUnitDriver:
- Understรธttelse af HTTPS- og HTTP-protokollerne
- Understรธttelse af HTML-svar (klik pรฅ links, indsendelse af formularer, gennemgang af DOM-modellen af โโHTML-dokumentet og mere)
- Support til cookies
- Proxy server support
- Understรธttelse af grundlรฆggende og NTLM-godkendelse
- Solid JavaScript support
- Understรธttelse af GET- og POST-indsendelsesmetoder
- Mulighed for at tilpasse anmodningsheaderne, der sendes til serveren
- Mulighed for at kontrollere, om fejlende svar fra serveren skal generere undtagelser eller returneres som sider af den relevante type
Trin til at bruge HtmlUnitDriver med Selenium
Trin 1) In Eclipse, kopier fรธlgende kode. Tilfรธj standarden Selenium biblioteksfiler til projektet. Der krรฆves ingen yderligere JAR-filer.
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();
}
}
Trin 2) Kรธr koden. Du vil observere, at ingen browser startes, og resultaterne vises i konsollen.
Fordele ved HtmlUnitDriver
- Da den ikke bruger nogen GUI, kรธrer testene i baggrunden uden visuel afbrydelse.
- Sammenlignet med andre driverinstanser er udfรธrelsen hurtigere
- Du kan ogsรฅ emulere forskellige browserversioner, nรฅr du kรธrer tests via HtmlUnitDriver.
-
Den er platformuafhรฆngig og nem at kรธre flere tests samtidigt. Den er ideel til belastningstest.
Begrรฆnsninger:
- Det kan ikke fuldt ud efterligne JavaScriptadfรฆrd for enhver rigtig browsermotor
PhantomJS
Pรฅmindelse: PhantomJS er udfaset og vedligeholdes ikke lรฆngere. Brug for nyt headless arbejde Selenium med headless Chrome eller Firefox, eller flyt til Dramatiker. Afsnittet nedenfor forbliver kun til reference for รฆldre versioner.
PhantomJS er en headless browser med en JavaScript API. Den blev historisk set brugt til headless testning af websteder, tilgang til og manipulation af websider og leveres med standard DOM API'en.
Sรฅdan bruger du PhantomJS med Selenium, du har brug for GhostDriver. GhostDriver er en implementering af WebDriver Wire-protokollen i almindelighed JavaScript til PhantomJS.
De senere udgivelser af PhantomJS integreret GhostDriver, sรฅ der er ingen grund til at installere det separat.
Sรฅdan fungerer systemet:
Trin til at lรธbe Selenium med PhantomJS
Trin 1) Du har brug for: varmt vand, vaskeklude og vatrondeller. Eclipse med Selenium installeret.
Trin 2) Download PhantomJS link..
Trin 3) ExtracIndsรฆt den downloadede mappe i Programfiler.
Trin 4) Download PhantomJS-driveren fra link.Tilfรธj JAR-filen til dit projekt.
Trin 5) Indsรฆt fรธlgende kode i 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();
}
}
Trin 6) Kรธr koden. Du vil se outputtet i konsollen, og ingen browser vil blive startet.
BEMรRK VENLIGST: Ved fรธrste kรธrsel kan du, afhรฆngigt af dine indstillinger, se en sikkerhedsadvarsel fra Windows for at tillade PhantomJS at kรธre. Klik Tillad adgang.
Mange organisationer har historisk set brugt PhantomJS til opgaver som:
- Hovedlรธs testning
- Skรฆrmbillede
- Sideautomatisering
- Netvรฆrksovervรฅgning
- Gengivelse af dashboard-skรฆrmbilleder for deres brugere
- Kรธrsel af enhedstests pรฅ kommandolinjen
- Generering af medarbejderhรฅndbรธger fra HTML til PDF
- Kombination med QUnit til testsuiten
For nyt arbejde, erstat disse PhantomJS use cases med headless Chrome, headless Firefoxeller Playwright, som modtager lรธbende sikkerheds- og gengivelsesopdateringer.






