HTMLUnitDriver in Selenium
Een headless browser is een webbrowser zonder grafische gebruikersinterface. Het kan op de achtergrond draaien zonder visuele afleiding. Het biedt een efficiënte en effectieve manier om webapplicaties te testen en tegelijkertijd tijd en middelen te besparen. In deze tutorial gaan we dieper in op wat een headless browser is, wanneer we headless browsertests moeten gebruiken en hoe we dit kunnen uitvoeren met behulp van Selenium.
Wat is een Headless Browser?
Een headless browser is een webbrowser zonder grafische gebruikersinterface. Dit programma gedraagt zich net als een browser, maar toont geen GUI.
Enkele voorbeelden van Headless Drivers zijn onder meer:
- HTML-eenheid
- Spook
- PhantomJS
- ZombieJS
- Watir-webstuurprogramma
Wanneer moet u een headless browsertest gebruiken?
In het digitale tijdperk van vandaag worden webapplicaties ontwikkeld om compatibel te zijn met een breed scala aan apparaten en platforms. Dit vormt vaak een uitdaging voor websiteontwikkelaars die ervoor moeten zorgen dat hun applicaties naadloos werken op deze platforms. Headless browser testing is een ideale oplossing voor dit probleem, omdat het ontwikkelaars in staat stelt hun webapplicaties te testen zonder dat er een grafische gebruikersinterface nodig is. Door headless browser testing te gebruiken, kunnen ontwikkelaars eenvoudig complexe webapplicaties testen met meerdere componenten en afhankelijkheden, wat de weg vrijmaakt voor snellere ontwikkeling, bugvrije code en tevreden gebruikers.
Headless browsertesten met Selenium
Selenium is een krachtige tool voor headless browser testing, waarmee ontwikkelaars geautomatiseerde tests kunnen uitvoeren zonder dat er een zichtbare gebruikersinterface nodig is. Door tests op de achtergrond uit te voeren, Selenium kan tijd en middelen besparen en tegelijkertijd problemen helpen identificeren die misschien niet duidelijk zijn in een traditionele UI-gebaseerde testomgeving. Dit omvat prestatiegerelateerde problemen en lay-outproblemen die mogelijk alleen duidelijk worden in een headless-omgeving. Het is echter belangrijk om de beperkingen van headless testen in gedachten te houden en dit in evenwicht te brengen met traditionele op de gebruikersinterface gebaseerde methoden om een uitgebreide testdekking te garanderen.
Populaire voorbeelden van headless browsers
Er zijn veel headless browsers beschikbaar, elk met zijn eigen unieke kenmerken en voordelen, waardoor ze geschikt zijn voor verschillende gebruiksscenario’s. We bespreken ze hieronder: -
PhantomJS
PhantomJS is een headless browser die WebKit gebruikt als rendering-engine en verschillende webstandaarden ondersteunt, zoals HTML5, CSS3 en JavaScript. Het kan worden gebruikt voor schermopname en pagina-automatiseringstaken. 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-functie. Het kan op meerdere platforms worden gebruikt en ondersteunt programmeertalen en frameworks. Dankzij de ingebouwde foutopsporingstools en uitgebreide documentatie is het eenvoudig te gebruiken en kunnen eventuele problemen die zich tijdens het testen kunnen voordoen, 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 kan worden gebruikt voor testdoeleinden. Een van de voordelen van het gebruik Firefox als headless browser is het lichtgewicht karakter ervan, waardoor het een veelzijdige optie is voor testen op verschillende besturingssystemen. Bovendien, met zijn uitgebreide documentatie en community support, Firefox is een uitstekende keuze voor mensen die willen experimenteren met headless browsertechnologie.
Voorbeeld van hoofdloos Firefox met 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
- Integratie met CI/CD-pijplijnen
Nadelen van headless browsertesten
- Gebrek aan GUI
- Moeilijkheden bij het debuggen
- Beperkte browserondersteuning
HTMLUnitDriver
HTML UnitDriver is de lichtste en snelste implementatie-headless browser voor WebDriver. Het is gebaseerd op HtmlUnit. Het is bekend als Headless browser-stuurprogramma. Het is hetzelfde als Chrome, IE of FireFox driver, maar deze heeft geen GUI, zodat men de testuitvoering niet op het scherm kan zien.
Kenmerken van het HTML-eenheidstuurprogramma
- Ondersteuning voor de HTTPS- en HTTP-protocollen
- Ondersteuning voor HTML-reacties (klikken op koppelingen, formulieren indienen, het DOM-model van het HTML-document doorlopen, enz.)
- Ondersteuning voor cookies
- Proxy server ondersteuning
- Ondersteuning voor basis- en NTLM-authenticatie
- Uitstekend JavaScript ondersteuning
- Ondersteuning voor indieningsmethoden GET en POST
- Mogelijkheid om de verzoekheaders aan te passen die naar de server worden verzonden
- Mogelijkheid om te bepalen of falende reacties van de server uitzonderingen moeten genereren of moeten worden geretourneerd als pagina's van het juiste type
Stappen om het HTMLUnit-stuurprogramma te gebruiken Selenium
Stap 1) In Eclipse, kopieer de volgende code. Voeg de standaard selenium-bibliotheekbestanden toe aan het project. Er zijn geen extra jar-bestanden vereist.
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 HTML unit 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 HTML Unit Driver:
- Omdat er geen GUI wordt gebruikt om te testen, worden uw tests op de achtergrond uitgevoerd zonder enige visuele onderbreking
- Vergeleken met alle andere instanties is de uitvoering sneller
- Om uw tests via het HtmlUnit-stuurprogramma uit te voeren, kunt u ook andere browserversies selecteren
-
Het is platformonafhankelijk en eenvoudiger om meerdere tests tegelijkertijd uit te voeren. Ideaal voor load Testen.
Beperkingen:
- Het kan geen andere browsers emuleren JavaScriptgedrag
PhantomJS
PhantomJS is een headless browser met JavaScript API. Het is een optimale oplossing voor Headless Website Testing, toegang tot en manipulatie van webpagina's en wordt geleverd met de standaard DOM API.
Om PhantomJS met Seleniun te gebruiken, moet je GhostDriver gebruiken. GhostDriver is een implementatie van het Webdriver Wire-protocol in eenvoudige JS voor PhantomJS.
De nieuwste versie van PhatomJS heeft geïntegreerde GhostDriver en het is niet nodig om het apart te installeren.
Hier is hoe het systeem werkt-
Stappen om te rennen Selenium met PhatomJS
Stap 1) Jij hebt nodig Eclipse met Selenium geïnstalleerd
Stap 2) PhantomJS downloaden hier
Stap 3) Pak de gedownloade map uit naar Program Files
Stap 4) Download het PhantomJS-stuurprogramma van hier. Voeg de pot toe aan uw 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. U zult zien dat de uitvoer in de console wordt weergegeven en dat er geen browser wordt gestart.
NOTITIE: Bij de eerste keer opstarten kunt u, afhankelijk van uw instellingen, een beveiligingswaarschuwing krijgen Windows om PhantomJS te kunnen uitvoeren. Klik op Toegang toestaan.
Veel organisaties gebruiken Phantom.JS voor verschillende doeleinden, bijvoorbeeld
- Testen zonder hoofd
- Screen Capture
- Pagina automatisering
- Network Monitoring
- Om dashboardscreenshots voor hun gebruikers weer te geven
- Om unit-tests uit te voeren op de opdrachtregel
- Voor het genereren van personeelshandboeken van HTML naar PDF
- Gecombineerd met QUnit voor de testsuite
Samenvatting
Om applicaties snel te testen in verschillende browsers en zonder enige visuele onderbreking, headless browser Testen wordt gebruikt. Vanwege de snelheid, nauwkeurigheid en eenvoudig toegankelijke functies worden HTML unit driver en PhantomJS steeds populairder voor headless browser automation testing. Door een aantal eenvoudige stappen te volgen, leert u hoe eenvoudig deze tools kunnen worden geïntegreerd met andere tools en hoe ze de testcode kunnen uitvoeren.