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.

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ă.
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:
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.
Pas 3) Extracfolderul descărcat în Program Files.
Pas 4) Descărcați driverul PhantomJS de pe aiciAdăugați fișierul JAR la proiectul dumneavoastră.
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.
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.






