HTMLUnitDriver în SeleniumTutorial pentru browser fără cap

⚡ Rezumat inteligent

HtmlUnitDriver este cea mai rapidă implementare headless a Selenium WebDriver, în timp ce PhantomJS, cândva un browser headless popular bazat pe GhostDriver, este depreciat din 2018 și acum înlocuit de Chrome headless, headless Firefoxși Playwright pentru fluxuri de lucru moderne de automatizare.

  • 🤖 Concept fără cap: Alerga Selenium teste fără o interfață grafică vizibilă pentru a economisi CPU, memorie și timp de execuție în conductele CI.
  • ⚙️ Putere HtmlUnitDriver: Pur Java motor, fără binar extern, ideal pentru verificări rapide la nivel HTTP și interacțiuni rapide cu formularele.
  • 🚀 Depreciere PhantomJS: Dezvoltarea PhantomJS s-a oprit în 2018; echipele ar trebui să migreze către Chrome fără headless, fără headless. Firefox, sau Dramaturg.
  • Alternative moderne: Chrome fără cap și Firefox ofertă precisă JavaRedare script, protocol DevTools și depanare îmbunătățită.
  • 🧪 Cele mai bune cazuri de utilizare: Verificări de tip „smoke check”, suite de regresie, testare a încărcării și joburi de integrare continuă pe runnere Linux headless.

HTMLUnitDriver în Selenium

Un browser headless este un browser web fără o interfață grafică. Poate rula în fundal fără afișaje vizuale.tracțiuni. Oferă o modalitate eficientă și eficace de a testa aplicațiile web, economisind timp și resurse. În acest articol, vom explora ce este un browser headless, când se utilizează testarea browserului headless și cum se efectuează folosind Selenium HtmlUnitDriver și PhantomJS.

Ce este un browser fără cap?

Un browser headless este un browser web fără interfață grafică cu utilizatorulAcest program se comportă exact ca un browser obișnuit, dar nu afișează nicio fereastră GUI în timpul execuției.

Câteva exemple de drivere de browser headless includ:

  • HtmlUnit
  • Fantomă
  • PhantomJS (depreciat)
  • ZombieJS
  • Watir-webdriver
  • Chrome fără cap
  • acefal Firefox

Când să folosiți testarea browserului fără cap?

În era digitală de astăzi, aplicațiile web sunt construite pentru a fi compatibile cu o gamă largă de dispozitive și platforme. Acest lucru creează o provocare pentru dezvoltatori, care trebuie să se asigure că aplicațiile lor funcționează perfect în diferite medii. Testarea headless a browserului este o soluție ideală, deoarece permite dezvoltatorilor să își valideze aplicațiile web fără o interfață grafică cu utilizatorul. Prin utilizarea testării headless a browserului, dezvoltatorii pot acoperi rapid aplicații web complexe cu multe componente și dependențe, deschizând calea pentru o dezvoltare mai rapidă, mai puține erori și utilizatori mai mulțumiți.

Testarea browserului fără cap cu Selenium

Selenium este un instrument puternic pentru testarea browserelor fără ecran, permițând dezvoltatorilor să ruleze teste automate fără o interfață utilizator vizibilă. Prin rularea testelor în fundal, Selenium economisește timp și resurse, ajutând în același timpping identificați problemele care pot să nu fie evidente într-un mediu de testare tradițional bazat pe interfață utilizator. Acestea includ probleme de performanță și aspect care devin evidente doar într-un mediu fără interfață utilizator (headless). Cu toate acestea, este important să se echilibreze testarea fără interfață utilizator (headless) cu testele tradiționale bazate pe interfață utilizator pentru a asigura o acoperire completă.

Exemple populare de browsere fără cap

Sunt disponibile multe browsere headless, fiecare cu propriile caracteristici și beneficii, ceea ce le face potrivite pentru diferite cazuri de utilizare. Le vom discuta mai jos.

PhantomJS

Notificare de depreciere: Dezvoltarea activă a PhantomJS s-a oprit în 2018, iar proiectul nu mai este întreținut. Noile proiecte ar trebui să prefere Chrome fără headless, headless Firefox, Dramaturg pentru automatizare headless modernă. Exemplul PhantomJS de mai jos este inclus doar pentru referință.

PhantomJS este un browser headless care folosește WebKit ca motor de randare și acceptă standarde web precum HTML5, CSS3 și JavaScript. Poate fi folosit pentru captură de ecran și automatizare a paginilor. Este open-source și compatibil cu mai multe sisteme de operare.

Exemplu de Selenium cu Headless PhantomJS în 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 este cel mai popular browser de pe planetă și oferă și un mod headless. Poate fi utilizat pe multe platforme și este compatibil cu limbaje de programare și framework-uri populare. Instrumentele sale de depanare încorporate și documentația extinsă facilitează utilizarea și depanarea oricăror probleme care pot apărea în timpul testării.

Exemplu de cromat fără cap cu 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 este un browser web popular care poate fi folosit și ca browser headless pentru testare. Un avantaj al utilizării Firefox Ca browser headless, datorită dimensiunii reduse, ceea ce îl face o opțiune versatilă pentru testarea pe diferite sisteme de operare. Combinată cu documentația sa extinsă și asistența comunității, Firefox este o alegere excelentă pentru echipele care experimentează cu automatizarea browserelor headless.

Exemplu de fără cap Firefox implementate cu 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()

Avantajele testării browserului Headless

  • Execuție mai rapidă a testului
  • Testare rentabilă
  • Acoperire mai bună a testelor
  • Flexibilitate în derularea testelor
  • Integrare mai ușoară cu conductele CI/CD

Dezavantajele testării browserului Headless

  • Lipsa unei interfețe grafice vizibile pentru inspecția manuală
  • Depanarea poate fi mai dificilă fără ecran
  • Acoperire limitată a comportamentului specific browserului

HtmlUnitDriver

HtmlUnitDriver este cea mai ușoară și rapidă implementare a unui browser headless pentru Selenium WebDriver. Se bazează pe HtmlUnit și este cunoscut și sub numele de Driver de browser fără capSe comportă ca Chrome, IE sau Firefox driver, dar nu are o interfață grafică, deci execuția testului nu este vizibilă pe ecran. HtmlUnitDriver este încă întreținut și este distribuit prin org.seleniumhq.selenium:htmlunit3-driver Artefact Maven.

Caracteristici ale HtmlUnitDriver:

  • Suport pentru protocoalele HTTPS și HTTP
  • Suport pentru răspunsuri HTML (clic pe linkuri, trimitere de formulare, parcurgerea modelului DOM al documentului HTML și multe altele)
  • Suport pentru cookie-uri
  • Suport server proxy
  • Suport pentru autentificare de bază și NTLM
  • Solid JavaScenariu a sustine
  • Suport pentru metodele de trimitere GET și POST
  • Posibilitatea de a personaliza anteturile cererilor care sunt trimise către server
  • Capacitatea de a controla dacă răspunsurile eșuate de la server ar trebui să genereze excepții sau să fie returnate ca pagini de tipul corespunzător

Pași pentru utilizarea HtmlUnitDriver cu Selenium

Pas 1) In Eclipse, copiați următorul cod. Adăugați standardul Selenium fișiere de bibliotecă la proiect. Nu sunt necesare fișiere JAR suplimentare.

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

Pas 2) Rulați codul. Veți observa că nu se lansează niciun browser și rezultatele sunt afișate în consolă.

Pași pentru utilizarea HtmlUnitDriver cu Selenium

Beneficiile HtmlUnitDriver

  • Deoarece nu utilizează nicio interfață grafică, testele rulează în fundal fără întreruperi vizuale
  • Comparativ cu alte instanțe de driver, execuția este mai rapidă
  • De asemenea, puteți emula diferite versiuni de browser atunci când rulați teste prin HtmlUnitDriver.
  • Este independent de platformă și permite rularea ușoară a mai multor teste simultan. Este ideal pentru testarea sarcinii.

Limitări:

  • Nu poate emula complet JavaComportamentul scriptului pentru fiecare motor de browser real

PhantomJS

Memento: PhantomJS este depreciat și nu mai este întreținut. Pentru lucrări noi fără antenă, utilizați Selenium cu Chrome fără ecran sau Firefoxsau treceți la Dramaturgi. Secțiunea de mai jos rămâne doar pentru referință anterioară.

PhantomJS este un browser headless cu un JavaAPI de script. A fost folosită în mod tradițional pentru testarea site-urilor web fără antet, accesarea și manipularea paginilor web și este livrată cu API-ul DOM standard.

Pentru a utiliza PhantomJS cu Selenium, ai nevoie de GhostDriver. GhostDriver este o implementare a protocolului WebDriver Wire în limbaj simplu JavaScript pentru PhantomJS.

Versiunile ulterioare ale PhantomJS integrate GhostDriver, deci nu este nevoie să îl instalați separat.

Iată cum funcționează sistemul:

PhantomJS

Pași pentru a alerga Selenium cu PhantomJS

Pas 1) Ai nevoie de Eclipse implementate cu Selenium instalat.

Pas 2) Descărcați PhantomJS aici.

Pași pentru a alerga Selenium Cu PhantomJS

Pas 3) Extracfolderul descărcat în Program Files.

Pași pentru a alerga Selenium Cu PhantomJS

Pas 4) Descărcați driverul PhantomJS de pe aiciAdăugați fișierul JAR la proiectul dumneavoastră.

Pași pentru a alerga Selenium Cu PhantomJS

Pas 5) Lipiți următorul cod în 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();			
           }		
}

Pas 6) Rulați codul. Veți vedea rezultatul în consolă și nu se va lansa niciun browser.

NOTĂ: La prima rulare, în funcție de setările dvs., este posibil să vedeți un avertisment de securitate de la Windows pentru a permite rularea lui PhantomJS. Faceți clic pe permite accesul.

Pași pentru a alerga Selenium Cu PhantomJS

Multe organizații au folosit din punct de vedere istoric PhantomJS pentru sarcini precum:

  • Testare fără cap
  • Captură de ecran
  • Automatizarea paginilor
  • Monitorizarea rețelei
  • Redarea capturilor de ecran ale tabloului de bord pentru utilizatorii lor
  • Rularea testelor unitare pe linia de comandă
  • Generarea manualelor angajaților din HTML în PDF
  • Combinarea cu QUnit pentru suita de teste

Pentru lucrări noi, înlocuiți aceste cazuri de utilizare PhantomJS cu Chrome fără cap, fără cap Firefoxsau Playwright, care primesc actualizări continue de securitate și de randare.

Întrebări frecvente

Un browser headless este un browser web care rulează fără o interfață grafică cu utilizatorul. În Selenium, drivere headless precum HtmlUnitDriver, Chrome headless și headless Firefox executați teste în fundal, ceea ce economisește resurse și accelerează suitele de automatizare.

Nu. Dezvoltarea PhantomJS a fost suspendată în 2018, iar proiectul nu mai este întreținut. Selenium a eliminat și PhantomJSDriver din versiunile recente. Noile teste ar trebui să utilizeze Chrome fără headless, headless Firefoxsau Dramaturg în schimb.

HtmlUnitDriver este un fișier pur Java motor, foarte rapid și nu necesită binar în browser, dar are resurse limitate JavaFidelitate a scriptului. Headless Chrome folosește motorul Blink real, deci redă imagini moderne. JavaSite-uri cu scripturi bogate în precizie, cu prețul unei utilizări mai mari a resurselor.

Utilizare Selenium cu Chrome fără cap sau fără cap Firefox pentru testarea preciziei browserului sau adoptați Playwright pentru automatizarea paralelă între browsere. Aceste instrumente primesc actualizări de securitate active și acceptă funcții moderne, cum ar fi protocolul DevTools și interceptarea rețelei.

Instrumentele bazate pe inteligență artificială pot repara automat locatorii atunci când DOM se modifică, pot prezice teste instabile și pot analiza capturi de ecran pentru regresii vizuale. Acest lucru reduce rulările headless defecte în CI și ajută echipele de QA să mențină stabilitatea. Selenium conducte cu mai puțină intervenție manuală.

Da. Asistenții moderni cu inteligență artificială pot genera Selenium Scripturi WebDriver în Java, Python, JavaScript din pași simpli în engleză, inclusiv opțiuni fără antet pentru Chrome sau FirefoxVerificați întotdeauna codul generat pentru a verifica dacă așteptările, selectorii și securitatea sunt corecte înainte de a-l rula în CI.

Rezumați această postare cu: