HTMLUnitDriver in Selenium: Tutorial sul browser headless

⚡ Riepilogo intelligente

HtmlUnitDriver è l'implementazione headless più veloce di Selenium WebDriver, mentre PhantomJS, un tempo popolare browser headless basato su GhostDriver, è deprecato dal 2018 e ora è stato sostituito da Chrome headless, headless Firefoxe Playwright per i moderni flussi di lavoro di automazione.

  • 🤖 Concetto senza testa: Correre Selenium test senza interfaccia grafica visibile per risparmiare CPU, memoria e tempo di esecuzione nelle pipeline CI.
  • ⚙️ Forza di HtmlUnitDriver: Pure Java Motore interno, senza file binari esterni, ideale per controlli rapidi a livello HTTP e interazioni veloci con i moduli.
  • 🚀 Avviso di deprecazione di PhantomJS: Lo sviluppo di PhantomJS si è interrotto nel 2018; i team dovrebbero migrare a headless Chrome, headless Firefox, o Drammaturgo.
  • ✅ Alternative moderne: Cromo senza testa e Firefox offrire accurato JavaRendering degli script, protocollo DevTools e debug migliorato.
  • 🧪 Migliori casi d'uso: Test di base, suite di regressione, test di carico e processi di integrazione continua su runner Linux senza interfaccia grafica.

HTMLUnitDriver in Selenium

Un browser headless è un browser web senza interfaccia utente grafica. Può essere eseguito in background senza visualizzazione.tracOffre un modo efficiente ed efficace per testare le applicazioni web risparmiando tempo e risorse. In questo articolo, esploriamo cos'è un browser headless, quando utilizzare il test con browser headless e come eseguirlo utilizzando Selenium HtmlUnitDriver e PhantomJS.

Che cos'è un browser headless?

Un browser headless è un browser web senza un'interfaccia utente graficaQuesto programma si comporta esattamente come un normale browser, ma non visualizza alcuna finestra grafica durante l'esecuzione.

Alcuni esempi di driver per browser headless includono:

  • HtmlUnit
  • Fantasma
  • PhantomJS (obsoleto)
  • ZombieJS
  • Watir-webdriver
  • Chrome senza testa
  • Senza testa Firefox

Quando utilizzare il test del browser headless?

Nell'era digitale odierna, le applicazioni web sono progettate per essere compatibili con un'ampia gamma di dispositivi e piattaforme. Questo rappresenta una sfida per gli sviluppatori, che devono garantire che le loro applicazioni funzionino senza problemi in ambienti diversi. Il test headless (senza interfaccia grafica) è una soluzione ideale perché consente agli sviluppatori di validare le proprie applicazioni web senza un'interfaccia utente grafica. Utilizzando il test headless, gli sviluppatori possono testare rapidamente applicazioni web complesse con molti componenti e dipendenze, accelerando i tempi di sviluppo, riducendo i bug e aumentando la soddisfazione degli utenti.

Test del browser senza testa con Selenium

Selenium è uno strumento potente per il test del browser headless, che consente agli sviluppatori di eseguire test automatizzati senza un'interfaccia utente visibile. Eseguendo i test in background, Selenium risparmia tempo e risorse e aiuta ancheping Identificare i problemi che potrebbero non essere evidenti in un ambiente di test tradizionale basato sull'interfaccia utente. Ciò include problemi di prestazioni e di layout che diventano evidenti solo in un ambiente headless. Tuttavia, è importante bilanciare i test headless con i test tradizionali basati sull'interfaccia utente per garantire una copertura completa.

Esempi popolari di browser headless

Sono disponibili numerosi browser headless, ognuno con le proprie caratteristiche e vantaggi, che li rendono adatti a diversi casi d'uso. Li analizzeremo di seguito.

PhantomJS

Avviso di deprecazione: Lo sviluppo attivo di PhantomJS si è interrotto nel 2018 e il progetto non è più mantenuto. I nuovi progetti dovrebbero preferire headless Chrome, headless Firefox, o Drammaturgo per l'automazione headless moderna. L'esempio PhantomJS riportato di seguito è incluso solo a scopo di riferimento.

PhantomJS è un browser headless che utilizza WebKit come motore di rendering e supporta standard web come HTML5, CSS3 e JavaScript. Può essere utilizzato per l'acquisizione di schermate e l'automazione di pagine web. È open-source ed è compatibile con diversi 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 al mondo e offre anche una modalità headless. È compatibile con numerose piattaforme e supporta i linguaggi di programmazione e i framework più diffusi. I suoi strumenti di debug integrati e l'ampia documentazione lo rendono facile da usare e consentono di risolvere qualsiasi problema che possa presentarsi 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 per i test. Un vantaggio dell'utilizzo Firefox come browser headless è il suo ingombro ridotto, che lo rende un'opzione versatile per i test su diversi sistemi operativi. In combinazione con la sua ampia documentazione e il supporto della community, Firefox è una scelta eccellente per i team che stanno sperimentando l'automazione del 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 più semplice con le pipeline CI/CD

Svantaggi del test del browser headless

  • Assenza di interfaccia grafica visibile per l'ispezione manuale
  • Il debug può essere più difficile senza uno schermo.
  • Copertura limitata del comportamento specifico del browser

HtmlUnitDriver

HtmlUnitDriver è l'implementazione più leggera e veloce di un browser headless per Selenium WebDriver. È basato su HtmlUnit ed è anche noto come Driver del browser senza testaSi comporta come Chrome, IE o Firefox driver, ma non ha un'interfaccia grafica, quindi l'esecuzione del test non è visibile sullo schermo. HtmlUnitDriver è ancora mantenuto ed è distribuito tramite org.seleniumhq.selenium:htmlunit3-driver Artefatto Maven.

Caratteristiche di HtmlUnitDriver:

  • Supporto per i protocolli HTTPS e HTTP
  • Supporto per risposte HTML (clic sui link, invio di moduli, esplorazione del modello DOM del documento HTML e altro ancora)
  • Supporto per i cookie
  • Supporto per server proxy
  • Supporto per l'autenticazione di base e NTLM
  • Tinte Unite JavaCopione supporto
  • Supporto per i metodi di invio GET e POST
  • Possibilità di personalizzare le intestazioni delle richieste inviate al server
  • Possibilità di controllare se le risposte non riuscite dal server debbano generare eccezioni o essere restituite come pagine del tipo appropriato.

Passaggi per utilizzare HtmlUnitDriver con Selenium

Passo 1) In Eclipse, copia il seguente codice. Aggiungi lo standard Selenium file di libreria nel progetto. Non sono necessari 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 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();			
         }		
}

Passo 2) Esegui il codice. Noterai che non viene avviato alcun browser e i risultati vengono visualizzati nella console.

Passaggi per utilizzare HtmlUnitDriver con Selenium

Vantaggi di HtmlUnitDriver

  • Poiché non utilizza alcuna interfaccia grafica, i test vengono eseguiti in background senza interruzioni visive.
  • Rispetto ad altre istanze del driver, l'esecuzione è più veloce
  • È inoltre possibile emulare diverse versioni del browser durante l'esecuzione dei test tramite HtmlUnitDriver
  • È indipendente dalla piattaforma e permette di eseguire facilmente diversi test contemporaneamente. È ideale per test di carico.

limitazioni:

  • Non può emulare completamente JavaComportamento degli script di ogni motore di browser reale

PhantomJS

Promemoria: PhantomJS è obsoleto e non è più supportato. Per nuovi lavori headless, utilizzare Selenium con Chrome senza testa o Firefox, oppure passare a Drammaturgo. La sezione seguente rimane solo a scopo di riferimento.

PhantomJS è un browser headless con un JavaAPI Script. Storicamente veniva utilizzata per testare siti web headless, accedere e manipolare pagine web, ed è inclusa nell'API DOM standard.

Per utilizzare PhantomJS con Selenium, hai bisogno di GhostDriver. GhostDriver è un'implementazione del protocollo WebDriver Wire in linguaggio semplice JavaScript per PhantomJS.

Le versioni successive di PhantomJS integrato GhostDriver, quindi Non è necessario installarlo separatamente.

Ecco come funziona il sistema:

PhantomJS

Passaggi per correre Selenium con PhantomJS

Passo 1) Hai bisogno Eclipse con Selenium installato.

Passo 2) Scarica PhantomJS Qui..

Passaggi per eseguire Selenium Con PhantomJS

Passo 3) Extracsposta la cartella scaricata in Programmi.

Passaggi per eseguire Selenium Con PhantomJS

Passo 4) Scarica il driver PhantomJS da Qui.Aggiungi il file JAR al tuo progetto.

Passaggi per eseguire Selenium Con PhantomJS

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. Vedrai l'output nella console e non verrà avviato alcun browser.

NOTA: Al primo avvio, a seconda delle impostazioni, potresti visualizzare un avviso di sicurezza da Windows per consentire l'esecuzione di PhantomJS. Fai clic consentire l'accesso.

Passaggi per eseguire Selenium Con PhantomJS

Storicamente, molte organizzazioni hanno utilizzato PhantomJS per attività quali:

  • Test senza testa
  • Cattura dello schermo
  • Automazione della pagina
  • Monitoraggio della rete
  • Visualizzazione di schermate del dashboard per i propri utenti
  • Esecuzione di test unitari dalla riga di comando
  • Generazione di manuali per i dipendenti da HTML a PDF
  • Combinazione con QUnit per la suite di test

Per il nuovo lavoro, sostituire questi casi d'uso di PhantomJS con Chrome headless, headless Firefox, o Playwright, che ricevono aggiornamenti continui di sicurezza e rendering.

DOMANDE FREQUENTI

Un browser headless è un browser web che funziona senza un'interfaccia utente grafica. Selenium, driver headless come HtmlUnitDriver, Chrome headless e headless Firefox Eseguire i test in background consente di risparmiare risorse e velocizzare le suite di automazione.

No. Lo sviluppo di PhantomJS è stato sospeso nel 2018 e il progetto non viene più mantenuto. Selenium ha anche rimosso PhantomJSDriver dalle versioni recenti. I nuovi test dovrebbero utilizzare Chrome headless, headless Firefox, oppure Drammaturgo.

HtmlUnitDriver è un puro Java motore, molto veloce e non necessita di un binario del browser, ma ha limitazioni JavaFedeltà dello script. Headless Chrome utilizza il vero motore Blink, quindi esegue il rendering moderno JavaSiti web con un elevato utilizzo di script, ma a costo di un maggiore consumo di risorse.

Usa il Selenium con Chrome senza testa o senza testa Firefox Per test accurati su ogni browser, oppure per l'automazione parallela cross-browser, è possibile adottare Playwright. Questi strumenti ricevono aggiornamenti di sicurezza costanti e supportano funzionalità moderne come il protocollo DevTools e l'intercettazione di rete.

Gli strumenti basati sull'IA possono riparare automaticamente i localizzatori quando il DOM cambia, prevedere test instabili e analizzare screenshot per regressioni visive. Ciò riduce le esecuzioni headless interrotte nella CI e aiuta i team di QA a mantenere la stabilità Selenium condotte con minore intervento manuale.

Sì. Gli assistenti IA moderni possono generare Selenium Script WebDriver in Java, Python, o JavaScript da passaggi in inglese semplice, incluse opzioni headless per Chrome o FirefoxPrima di eseguire il codice generato in CI, è sempre necessario verificarne la correttezza in termini di attese, selettori e sicurezza.

Riassumi questo post con: