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.






