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.

  • ๐Ÿค– Concept zonder hoofd: lopen Selenium Tests zonder zichtbare grafische gebruikersinterface om CPU-, geheugen- en uitvoeringstijd te besparen in CI-pipelines.
  • โš™๏ธ Sterkte van HtmlUnitDriver: Pure Java De engine heeft geen externe binaire bestanden nodig, ideaal voor snelle HTTP-controles en vlotte formulierinteracties.
  • ๐Ÿš€ PhantomJS wordt afgeschaft: De ontwikkeling van PhantomJS is in 2018 gestopt; teams zouden moeten overstappen op headless Chrome. Firefox, of toneelschrijver.
  • โœ… Moderne alternatieven: Koploos chroom en Firefox bieden nauwkeurige JavaScriptrendering, DevTools Protocol en betere foutopsporing.
  • ๐Ÿงช Beste gebruiksscenario's: Rooktests, regressietests, belastingstests en continue integratietaken op headless Linux-servers.

HTMLUnitDriver in Selenium

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.

Stappen om HtmlUnitDriver te gebruiken met Selenium

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:

PhantomJS

Stappen om te lopen Selenium met PhantomJS

Stap 1) Jij hebt nodig Eclipse with Selenium geรฏnstalleerd.

Stap 2) PhantomJS downloaden hier.

Stappen om uit te voeren Selenium Met PhantomJS

Stap 3) ExtracPlaats de gedownloade map in de map Program Files.

Stappen om uit te voeren Selenium Met PhantomJS

Stap 4) Download het PhantomJS-stuurprogramma van hierVoeg het JAR-bestand toe aan je project.

Stappen om uit te voeren Selenium Met PhantomJS

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.

Stappen om uit te voeren Selenium Met PhantomJS

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.

Veelgestelde vragen

Een headless browser is een webbrowser die zonder grafische gebruikersinterface werkt. Selenium, headless drivers zoals HtmlUnitDriver, headless Chrome en headless Firefox Tests worden op de achtergrond uitgevoerd, wat resources bespaart en de automatiseringssuites versnelt.

Nee. De ontwikkeling van PhantomJS is in 2018 stopgezet en het project wordt niet langer onderhouden. Selenium PhantomJSDriver is ook verwijderd uit recente releases. Nieuwe tests moeten gebruikmaken van headless Chrome. FirefoxOf toneelschrijver.

HtmlUnitDriver is een pure Java De engine is erg snel en vereist geen browserbestand, maar heeft wel beperkingen. JavaScriptgetrouwheid. Headless Chrome gebruikt de echte Blink-engine, waardoor moderne scripts correct worden weergegeven. JavaGeeft scriptintensieve websites nauwkeurig weer, maar dit gaat ten koste van een hoger resourcegebruik.

Gebruik Selenium met headless Chrome of headless Firefox Gebruik voor browsernauwkeurige tests of Playwright voor parallelle, browseroverschrijdende automatisering. Deze tools ontvangen regelmatig beveiligingsupdates en ondersteunen moderne functies zoals het DevTools Protocol en netwerkinterceptie.

AI-gestuurde tools kunnen locators automatisch herstellen wanneer de DOM verandert, onbetrouwbare tests voorspellen en screenshots analyseren op visuele regressies. Dit vermindert mislukte headless runs in CI en helpt QA-teams om stabiele systemen te behouden. Selenium pijplijnen met minder handmatige tussenkomst.

Ja. Moderne AI-assistenten kunnen genereren Selenium WebDriver-scripts in Java, Pythonof JavaScript op basis van stappen in begrijpelijke taal, inclusief opties voor de headless-modus in Chrome of FirefoxControleer altijd de gegenereerde code op correcte wachttijden, selectors en beveiliging voordat u deze in de CI-omgeving uitvoert.

Vat dit bericht samen met: