HTMLUnitDriver i Selenium

En hodelรธs nettleser er en nettleser uten et grafisk brukergrensesnitt. Den kan kjรธre i bakgrunnen uten visuelle distraksjoner. Det tilbyr en effektiv og effektiv mรฅte รฅ teste nettapplikasjoner pรฅ samtidig som du sparer tid og ressurser. I denne opplรฆringen vil vi dykke inn i hva en hodelรธs nettleser er, nรฅr du skal bruke hodelรธs nettlesertesting, og hvordan du utfรธrer den ved รฅ bruke Selenium.

Hva er Headless Browser?

En hodelรธs nettleser er en nettleser uten et grafisk brukergrensesnitt. Dette programmet vil oppfรธre seg akkurat som en nettleser, men vil ikke vise noen GUI.

Noen av eksemplene pรฅ hodelรธse sjรฅfรธrer inkluderer

  • HtmlUnit
  • Ghost
  • PhantomJS
  • ZombieJS
  • Watir-webdriver

Nรฅr skal man bruke hodelรธs nettlesertesting?

I dagens digitale tidsalder er nettapplikasjoner utviklet for รฅ vรฆre kompatible med et bredt spekter av enheter og plattformer. Dette utgjรธr ofte en utfordring for nettstedsutviklere som trenger รฅ sikre at applikasjonene deres fungerer sรธmlรธst pรฅ tvers av disse plattformene. Headless nettlesertesting er en ideell lรธsning for dette problemet, da det lar utviklere teste webapplikasjonene sine uten behov for et grafisk brukergrensesnitt. Ved รฅ bruke hodelรธs nettlesertesting kan utviklere enkelt teste komplekse nettapplikasjoner med flere komponenter og avhengigheter, og baner vei for raskere utvikling, feilfri kode og fornรธyde brukere.

Hodelรธs nettlesertesting med Selenium

Selenium er et kraftig verktรธy for hodelรธs nettlesertesting, som lar utviklere kjรธre automatiserte tester uten behov for et synlig brukergrensesnitt. Ved รฅ kjรธre tester i bakgrunnen, Selenium kan spare tid og ressurser samtidig som det hjelper med รฅ identifisere problemer som kanskje ikke er tydelige i et tradisjonelt brukergrensesnittbasert testmiljรธ. Dette inkluderer ytelsesrelaterte problemer og layoutproblemer som kanskje bare blir tydelige i en hodelรธs setting. Det er imidlertid viktig รฅ huske pรฅ begrensningene ved hodelรธs testing og balansere den med tradisjonelle UI-baserte metoder for รฅ sikre omfattende testdekning.

Populรฆre eksempler pรฅ hodelรธse nettlesere

Det er mange hodelรธse nettlesere tilgjengelig, hver med sine egne unike funksjoner og fordeler, noe som gjรธr dem egnet for forskjellige brukstilfeller. Vi diskuterer dem nedenfor:

PhantomJS

PhantomJS er en hodelรธs nettleser som bruker WebKit som sin gjengivelsesmotor og stรธtter ulike nettstandarder som HTML5, CSS3 og JavaManus. Den kan brukes til skjermopptak og sideautomatiseringsoppgaver. Den er รฅpen kildekode og kompatibel 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 hodelรธs funksjon. Den kan brukes pรฅ tvers av flere plattformer og stรธtter programmeringssprรฅk og rammeverk. Dens innebygde feilsรธkingsverktรธy og omfattende dokumentasjon gjรธr det enkelt รฅ 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 hodelรธs nettleser for testformรฅl. En av fordelene med รฅ bruke Firefox som en hodelรธs nettleser er dens lette natur, noe som gjรธr den til et allsidig alternativ for testing pรฅ forskjellige operativsystemer. I tillegg, med sin omfattende dokumentasjon og samfunnsstรธtte, Firefox er et utmerket valg for de som รธnsker รฅ eksperimentere med hodelรธs nettleserteknologi.

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
  • Integrasjon med CI/CD-rรธrledninger

Ulemper med hodelรธs nettlesertesting

  • Mangel pรฅ GUI
  • Vanskeligheter med รฅ feilsรธke
  • Begrenset nettleserstรธtte

HTMLUnitDriver

HTML UnitDriver er den letteste og raskeste implementeringen hodelรธse nettleseren for WebDriver. Den er basert pรฅ HtmlUnit. Det er kjent som Hodelรธs nettleserdriver. Det er det samme som Chrome, IE eller FireFox driver, men den har ikke GUI sรฅ man kan ikke se testkjรธringen pรฅ skjermen.

Funksjoner av HTML-enhetsdriver

  • 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 osv.)
  • Stรธtte for informasjonskapsler
  • Stรธtte for proxy-server
  • Stรธtte for grunnleggende og NTLM-autentisering
  • Utmerket JavaScript stรธtte
  • Stรธtte for innsendingsmetoder GET og POST
  • Evne til รฅ tilpasse forespรธrselshodene som sendes til serveren
  • Evne til รฅ bestemme om sviktende svar fra serveren skal gi unntak eller skal returneres som sider av riktig type

Trinn for รฅ bruke HTMLUnit-driveren med Selenium

Trinn 1) In Eclipse, kopier fรธlgende kode. Legg til standard selenbibliotekfilene til prosjektet. Ingen ekstra jar-filer kreves.

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();			
         }		
}

Trinn 2) Kjรธr koden. Du vil observere at ingen nettleser er startet og resultatene vises i konsollen.

Trinn for รฅ bruke HTMLUnit-driveren med Selenium

Fordeler med HTML-enhetsdriver:

  • Siden den ikke bruker noen GUI for รฅ teste, vil testene dine kjรธre i bakgrunnen uten visuelle avbrudd
  • Sammenlignet med alle andre tilfeller er kjรธringen raskere
  • For รฅ kjรธre testene gjennom HtmlUnit-driveren kan du ogsรฅ velge andre nettleserversjoner
  • Det er plattformuavhengig og enklere รฅ kjรธre flere tester samtidig. Ideell for Load Testing.

Begrensninger:

  • Den kan ikke etterligne andre nettlesere JavaSkriptoppfรธrsel

PhantomJS

PhantomJS er en hodelรธs nettleser med JavaScript API. Det er en optimal lรธsning for Headless Website Testing, tilgang til og manipulere nettsider og leveres med standard DOM API.

For รฅ bruke PhantomJS med Seleniun, mรฅ man bruke GhostDriver. GhostDriver er en implementering av Webdriver Wire-protokollen i enkel JS for PhantomJS.

Den siste utgivelsen av PhatomJS har integrert GhostDriver og det er ikke nรธdvendig รฅ installere den separat.

Her er hvordan systemet fungerer-

PhantomJS

Trinn for รฅ lรธpe Selenium med PhatomJS

Trinn 1) Du trenger Eclipse med Selenium installerte

Trinn 2) Last ned PhantomJS her.

Trinn for รฅ kjรธre Selenium Med PhatomJS

Trinn 3) Pakk ut den nedlastede mappen til Program Files

Trinn for รฅ kjรธre Selenium Med PhatomJS

Trinn 4) Last ned PhantomJS-driveren fra her.. Legg krukken til prosjektet ditt

Trinn for รฅ kjรธre Selenium Med PhatomJS

Trinn 5) Lim inn fรธlgende kode i formรธrkelse

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 utdataene vises i konsollen og ingen nettleser er startet.

MERKNADER: Ved fรธrste kjรธring, basert pรฅ innstillingene dine, kan du fรฅ sikkerhetsadvarsel fra Windows for รฅ tillate รฅ kjรธre PhantomJS. Klikk pรฅ Tillat tilgang.

Trinn for รฅ kjรธre Selenium Med PhatomJS

Mange organisasjoner bruker Phantom.JS til forskjellige formรฅl, for eksempel,

  • Hodelรธs testing
  • Screen Capture
  • Sideautomatisering
  • Network Monitoring
  • For รฅ gjengi skjermbilder av dashbord for brukerne deres
  • For รฅ kjรธre enhetstester pรฅ kommandolinjen
  • For รฅ generere medarbeiderhรฅndbรธker fra HTML til PDF
  • Kombinert med QUnit for testsuiten

Sammendrag

For รฅ teste applikasjonen raskt i forskjellige nettlesere og uten visuelle avbrudd, hodelรธs nettleser Testing brukes. Pรฅ grunn av hastigheten, nรธyaktigheten og de lett tilgjengelige funksjonene, blir HTML-enhetsdriveren og PhantomJS stadig mer populรฆr for hodelรธs nettleserautomatiseringstesting. Ved รฅ fรธlge noen enkle trinn fรฅr du vite hvor enkelt disse verktรธyene kan integreres med andre verktรธy og kan utfรธre testkoden.

Oppsummer dette innlegget med: