HTMLUnitDriver i Selenium

En hovedlรธs browser er en webbrowser uden en grafisk brugergrรฆnseflade. Den kan kรธre i baggrunden uden visuelle forstyrrelser. Det tilbyder en effektiv og effektiv mรฅde at teste webapplikationer pรฅ, mens du sparer tid og ressourcer. I denne tutorial vil vi dykke ned i, hvad en hovedlรธs browser er, hvornรฅr man skal bruge hovedlรธs browsertest, og hvordan man udfรธrer det ved hjรฆlp af Selenium.

Hvad er hovedlรธs browser?

En hovedlรธs browser er en webbrowser uden en grafisk brugergrรฆnseflade. Dette program vil opfรธre sig ligesom en browser, men vil ikke vise nogen GUI.

Nogle af eksemplerne pรฅ hovedlรธse drivere inkluderer

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

Hvornรฅr skal man bruge Headless Browser Testing?

I nutidens digitale tidsalder er webapplikationer udviklet til at vรฆre kompatible med en lang rรฆkke enheder og platforme. Dette udgรธr ofte en udfordring for webstedsudviklere, der skal sikre, at deres applikationer fungerer problemfrit pรฅ tvรฆrs af disse platforme. Hovedlรธs browsertest er en ideel lรธsning pรฅ dette problem, da det giver udviklere mulighed for at teste deres webapplikationer uden behov for en grafisk brugergrรฆnseflade. Ved at bruge hovedlรธs browsertestning kan udviklere nemt teste komplekse webapplikationer med flere komponenter og afhรฆngigheder, hvilket baner vejen for hurtigere udvikling, fejlfri kode og glade brugere.

Hovedlรธs browsertest med Selenium

Selenium er et kraftfuldt vรฆrktรธj til hovedlรธs browsertest, som giver udviklere mulighed for at kรธre automatiserede test uden behov for en synlig brugergrรฆnseflade. Ved at kรธre test i baggrunden, Selenium kan spare tid og ressourcer, samtidig med at det hjรฆlper med at identificere problemer, der mรฅske ikke er synlige i et traditionelt UI-baseret testmiljรธ. Dette inkluderer prรฆstationsrelaterede problemer og layoutproblemer, som mรฅske kun bliver tydelige i en hovedlรธs indstilling. Det er dog vigtigt at huske pรฅ begrรฆnsningerne ved hovedlรธs testning og balancere den med traditionelle UI-baserede metoder for at sikre omfattende testdรฆkning.

Populรฆre eksempler pรฅ hovedlรธse browsere

Der er mange hovedlรธse browsere tilgรฆngelige, hver med sine egne unikke funktioner og fordele, hvilket gรธr dem velegnede til forskellige brugssituationer. Vi diskuterer dem nedenfor:

PhantomJS

PhantomJS er en hovedlรธs browser, der bruger WebKit som sin gengivelsesmotor og understรธtter forskellige webstandarder sรฅsom HTML5, CSS3 og JavaManuskript. Det kan bruges til skรฆrmoptagelse og sideautomatiseringsopgaver. Den er open source og kompatibel 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 hovedlรธs funktion. Det kan bruges pรฅ tvรฆrs af flere platforme og understรธtter programmeringssprog og rammer. Dens indbyggede fejlfindingsvรฆrktรธjer og omfattende dokumentation gรธr det nemt at bruge og fejlfinde eventuelle problemer, der mรฅtte opstรฅ under test.

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 hovedlรธs browser til testformรฅl. En af fordelene ved at bruge Firefox som en hovedlรธs browser er dens lette natur, hvilket gรธr den til en alsidig mulighed for test pรฅ forskellige operativsystemer. Derudover, med sin omfattende dokumentation og fรฆllesskabsstรธtte, Firefox er et glimrende valg for dem, der รธnsker at eksperimentere med hovedlรธs browserteknologi.

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
  • Integration med CI/CD pipelines

Ulemper ved Headless Browser Testing

  • Mangel pรฅ GUI
  • Vanskeligheder med at fejlfinde
  • Begrรฆnset browserunderstรธttelse

HTMLUnitDriver

HTML UnitDriver er den letteste og hurtigste implementering af hovedlรธse browser til WebDriver. Det er baseret pรฅ HtmlUnit. Det er kendt som Hovedlรธs browser driver. Det er det samme som Chrome, IE eller FireFox driver, men den har ikke GUI, sรฅ man kan ikke se testudfรธrelsen pรฅ skรฆrmen.

Funktioner af HTML-enhed driver

  • Understรธttelse af HTTPS- og HTTP-protokollerne
  • Understรธttelse af HTML-svar (klik pรฅ links, indsendelse af formularer, gennemgang af HTML-dokumentets DOM-model osv.)
  • Support til cookies
  • Proxy server support
  • Understรธttelse af grundlรฆggende og NTLM-godkendelse
  • Fantastike JavaScript support
  • Support til indsendelsesmetoder GET og POST
  • Mulighed for at tilpasse anmodningsheaderne, der sendes til serveren
  • Mulighed for at bestemme, om svigtende svar fra serveren skal give undtagelser eller skal returneres som sider af den relevante type

Trin til at bruge HTMLUnit-driver med Selenium

Trin 1) In Eclipse, kopier fรธlgende kode. Tilfรธj standard selenbiblioteksfilerne 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 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();			
         }		
}

Trin 2) Kรธr koden. Du vil observere, at ingen browser er startet, og resultaterne vises i konsollen.

Trin til at bruge HTMLUnit-driver med Selenium

Fordele ved HTML-enhedsdriver:

  • Da det ikke bruger nogen GUI til at teste, vil dine test kรธre i baggrunden uden nogen visuel afbrydelse
  • Sammenlignet med alle andre tilfรฆlde er eksekveringen hurtigere
  • For at kรธre dine tests gennem HtmlUnit-driveren kan du ogsรฅ vรฆlge andre browserversioner
  • Det er platformsuafhรฆngigt og lettere at kรธre flere test samtidigt. Ideel til Load Testing.

Begrรฆnsninger:

  • Det kan ikke efterligne andre browsere JavaScriptadfรฆrd

PhantomJS

PhantomJS er en hovedlรธs browser med JavaScript API. Det er en optimal lรธsning til Headless Website Testing, fรฅ adgang til og manipulere websider og leveres med standard DOM API.

For at bruge PhantomJS med Seleniun, skal man bruge GhostDriver. GhostDriver er en implementering af Webdriver Wire-protokollen i simpel JS til PhantomJS.

Den seneste udgivelse af PhatomJS har integreret GhostDriver og det er ikke nรธdvendigt at installere det separat.

Her er hvordan systemet fungerer-

PhantomJS

Trin til at lรธbe Selenium med PhatomJS

Trin 1) Du har brug for: varmt vand, vaskeklude og vatrondeller. Eclipse med Selenium installeret

Trin 2) Download PhantomJS link.

Trin til at kรธre Selenium Med PhatomJS

Trin 3) Udpak den downloadede mappe til Programfiler

Trin til at kรธre Selenium Med PhatomJS

Trin 4) Download PhantomJS-driveren fra link.. Tilfรธj krukken til dit projekt

Trin til at kรธre Selenium Med PhatomJS

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, at outputtet vises i konsollen, og ingen browser er startet.

BEMร†RK: Ved fรธrste kรธrsel kan du, baseret pรฅ dine indstillinger, fรฅ en sikkerhedsadvarsel fra Windows for at tillade at kรธre PhantomJS. Klik pรฅ Tillad adgang.

Trin til at kรธre Selenium Med PhatomJS

Mange organisationer bruger Phantom.JS til forskellige formรฅl, f.eks.

  • Hovedlรธs test
  • Screen Capture
  • Sideautomatisering
  • Overvรฅgning af netvรฆrk
  • At gengive skรฆrmbilleder af dashboard for deres brugere
  • For at kรธre enhedstest pรฅ kommandolinjen
  • At generere medarbejderhรฅndbรธger fra HTML til PDF
  • Kombineret med QUnit til testsuiten

Resumรฉ

For at teste applikationen hurtigt i forskellige browsere og uden nogen visuel afbrydelse, hovedlรธs browser Test er brugt. Pรฅ grund af dens hastighed, nรธjagtighed og let tilgรฆngelige funktioner, vinder HTML-enhedsdriver og PhantomJS popularitet for hovedlรธs browserautomatiseringstest. Ved at fรธlge nogle enkle trin fรฅr du at vide, hvor nemt disse vรฆrktรธjer kan integreres med andre vรฆrktรธjer og kan udfรธre testkoden.

Opsummer dette indlรฆg med: