HTMLUnitDriver in Selenium
Un browser headless è un browser web senza interfaccia utente grafica. Può funzionare in background senza distrazioni visive. Offre un modo efficiente ed efficace per testare le applicazioni web risparmiando tempo e risorse. In questo tutorial, approfondiremo cos'è un browser headless, quando utilizzare il test del browser headless e come eseguirlo utilizzando Selenium.
Cos'è il browser senza testa?
Un browser headless è un browser web senza un'interfaccia utente grafica. Questo programma si comporterà proprio come un browser ma non mostrerà alcuna GUI.
Alcuni degli esempi di driver headless includono
- HtmlUnit
- Fantasma
- PhantomJS
- ZombieJS
- Watir-webdriver
Quando utilizzare il test del browser headless?
Nell'era digitale odierna, le applicazioni web vengono sviluppate per essere compatibili con un'ampia gamma di dispositivi e piattaforme. Ciò spesso rappresenta una sfida per gli sviluppatori di siti web che devono garantire che le loro applicazioni funzionino senza problemi su queste piattaforme. Il test del browser headless è una soluzione ideale per questo problema in quanto consente agli sviluppatori di testare le loro applicazioni web senza la necessità di un'interfaccia utente grafica. Utilizzando il test del browser headless, gli sviluppatori possono facilmente testare applicazioni web complesse con più componenti e dipendenze, aprendo la strada a uno sviluppo più rapido, codice privo di bug e utenti soddisfatti.
Test del browser senza testa con Selenium
Selenium è un potente strumento per testare i browser headless, consentendo agli sviluppatori di eseguire test automatizzati senza la necessità di un'interfaccia utente visibile. Eseguendo i test in background, Selenium può far risparmiare tempo e risorse e allo stesso tempo aiutare a identificare problemi che potrebbero non essere evidenti in un ambiente di test tradizionale basato sull'interfaccia utente. Ciò include problemi relativi alle prestazioni e problemi di layout che possono diventare evidenti solo in un ambiente senza testa. Tuttavia, è importante tenere presenti i limiti dei test headless e bilanciarli con i metodi tradizionali basati sull'interfaccia utente per garantire una copertura completa dei test.
Esempi popolari di browser headless
Sono disponibili molti browser headless, ciascuno con caratteristiche e vantaggi unici, che li rendono adatti a diversi casi d'uso. Ne discutiamo di seguito: -
PhantomJS
PhantomJS è un browser headless che utilizza WebKit come motore di rendering e supporta vari standard web come HTML5, CSS3 e JavaScript. Può essere utilizzato per attività di cattura dello schermo e automazione delle pagine. È open source e compatibile con più sistemi operativi.
Esempio di Selenium con Headless PhantomJS dentro 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 è il browser più popolare del pianeta e offre anche una funzionalità headless. Può essere utilizzato su più piattaforme e supporta linguaggi e framework di programmazione. I suoi strumenti di debug integrati e l'ampia documentazione ne semplificano l'utilizzo e la risoluzione di eventuali problemi che potrebbero verificarsi durante i test.
Esempio di Headless Chrome con 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 è un browser Web popolare che può essere utilizzato anche come browser headless a scopo di test. Uno dei vantaggi dell'utilizzo Firefox essendo un browser headless è la sua natura leggera, che lo rende un'opzione versatile per i test su vari sistemi operativi. Inoltre, con la sua ampia documentazione e il supporto della comunità, Firefox è una scelta eccellente per coloro che desiderano sperimentare la tecnologia dei browser headless.
Esempio di senza testa Firefox con 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()
Vantaggi del test del browser headless
- Esecuzione del test più rapida
- Test convenienti
- Migliore copertura dei test
- Flessibilità nell'esecuzione dei test
- Integrazione con pipeline CI/CD
Svantaggi del test del browser headless
- Mancanza di GUI
- Difficoltà nel debug
- Supporto browser limitato
HTMLUnitDriver
HTML UnitDriver è il browser headless dall'implementazione più leggera e veloce per WebDriver. È basato su HtmlUnit. È noto come Driver del browser senza testaÈ uguale a Chrome, IE o FireFox driver, ma non ha una GUI quindi non è possibile vedere l'esecuzione del test sullo schermo.
Caratteristiche del driver dell'unità HTML
- Supporto per i protocolli HTTPS e HTTP
- Supporto per le risposte HTML (cliccando su collegamenti, inviando moduli, percorrendo il modello DOM del documento HTML ecc.)
- Supporto per i cookie
- Supporto per server proxy
- Supporto per l'autenticazione di base e NTLM
- Ottimo JavaCopione supporto
- Supporto per i metodi di invio GET e POST
- Possibilità di personalizzare le intestazioni delle richieste inviate al server
- Possibilità di determinare se le risposte non riuscite dal server devono generare eccezioni o devono essere restituite come pagine del tipo appropriato
Passaggi per utilizzare il driver HTMLUnit con Selenium
Passo 1) In Eclipse, copia il seguente codice. Aggiungi i file della libreria standard selenium al progetto. Non sono richiesti file jar aggiuntivi.
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(); } }
Passaggio 2) Esegui il codice. Noterai che nessun browser viene avviato e i risultati vengono visualizzati nella console.
Vantaggi del driver dell'unità HTML:
- Poiché non utilizza alcuna GUI per i test, i test verranno eseguiti in background senza alcuna interruzione visiva
- Rispetto a tutte le altre istanze l'esecuzione è più veloce
- Per eseguire i tuoi test tramite il driver HtmlUnit puoi anche selezionare altre versioni di browser
-
È indipendente dalla piattaforma ed è più semplice eseguire diversi test contemporaneamente. Ideale per Caricare i test.
limitazioni:
- Non può emulare altri browser JavaComportamento dello script
PhantomJS
PhantomJS è un browser headless con JavaAPI script. È una soluzione ottimale per il test di siti Web Headless, per accedere e manipolare pagine Web e viene fornito con l'API DOM standard.
Per utilizzare PhantomJS con Seleniun, è necessario utilizzare GhostDriver. GhostDriver è un'implementazione del protocollo Webdriver Wire in semplice JS per PhantomJS.
L'ultima versione di PhatomJS ha integrato GhostDriver e non è necessario installarlo separatamente.
Ecco come funziona il sistema-
Passi da eseguire Selenium con PhatomJS
Passo 1) Hai bisogno Eclipse con Selenium installato
Passo 2) Scarica PhantomJS qui
Passo 3) Estrai la cartella scaricata in Programmi
Passo 4) Scarica il driver PhantomJS da qui. Aggiungi il barattolo al tuo progetto
Passo 5) Incolla il seguente codice 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(); } }
Passo 6) Esegui il codice. Osserverai che l'output viene mostrato nella console e nessun browser viene avviato.
NOTA: Alla prima esecuzione, in base alle tue impostazioni, potresti ricevere un avviso di sicurezza da Windows per consentire l'esecuzione di PhantomJS. Fare clic su Consenti accesso.
Molte organizzazioni utilizzano Phantom.JS per vari scopi, ad esempio,
- Test senza testa
- Screen Capture
- Automazione della pagina
- rete di Monitoraggio
- Per eseguire il rendering degli screenshot della dashboard per i propri utenti
- Per eseguire unit test sulla riga di comando
- Per generare manuali per i dipendenti da HTML a PDF
- Combinato con QUnit per la suite di test
Sintesi
Per testare rapidamente l'applicazione in vari browser e senza alcuna interruzione visiva, browser headless Testing viene utilizzato. Grazie alla sua velocità, accuratezza e facilità di accesso alle funzionalità, HTML unit driver e PhantomJS stanno guadagnando popolarità per i test di automazione dei browser headless. Seguendo alcuni semplici passaggi, scoprirai quanto facilmente questi strumenti possono essere integrati con altri strumenti e possono eseguire il codice di test.