Selenium: cos’è, come funziona e come pilotare il browser (Guida Completa)
Cos'è e come funziona Selenium, software open source che permette di automatizzare compiti ripetitivi come il testing, l'estrazione di dati e l'interazione con le pagine Web.

L’automazione del browser consiste in un insieme di soluzioni che si rivelano fondamentali nel settore dello sviluppo e del testing delle applicazioni Web. Grazie alle soluzioni di automazione si possono controllare e gestire le interazioni con le pagine Web senza l’intervento manuale dell’utente, eseguendo compiti ripetitivi come la navigazione tra pagine, la compilazione di moduli, l’estrazione di dati e la verifica di link in modo efficiente e preciso. Selenium è un potente strumento open source utilizzato principalmente per automatizzare i test sulle applicazioni Web.
Il framework alla base del funzionamento di Selenium è composto da diversi strumenti, ciascuno con funzioni specifiche. Con Selenium, è possibile simulare interazioni utente come clic, compilazioni di form, navigazione tra pagine, riducendo notevolmente il tempo e lo sforzo necessari per il testing manuale.
Al di fuori del testing, Selenium si mette in evidenza come un software versatile e utile in diversi contesti: per l’estrazione di dati (Web scraping), per l’automazione di compiti ripetitivi, per il monitoraggio dei siti Web, per l’interazione con portali online, per attività di ricerca e analisi di mercato.
Selenium: perché è così utile e potente
Selenium è uno degli strumenti più apprezzati dagli sviluppatori per diversi motivi:
- Open source e gratuito: Grazie alla sua natura aperta, Selenium è supportato da una vasta comunità di sviluppatori. Ci sono molte risorse disponibili per imparare e risolvere problemi.
- Compatibilità multi-piattaforma: Selenium può essere eseguito su Windows, Linux, e macOS, rendendolo adatto a diversi ambienti di sviluppo.
- Supporto multi-linguaggio: Consente di scrivere codice in vari linguaggi di programmazione, facilitando l’integrazione con diverse metodologie di testing.
- Parallel Testing: Grazie a Selenium Grid, è possibile eseguire test in parallelo su più macchine e browser, riducendo significativamente i tempi di testing delle applicazioni.
Come provare Selenium con Python su Linux
Per non abbandonare il vostro lavoro con Windows, potete pensare di fare qualche test con Selenium all’interno di una macchina virtuale GNU/Linux oppure utilizzando WSL (Windows Subsystem for Linux).
Visto che l’installazione di WSL in Windows 10 e Windows 11 è semplicissima, vale la pena utilizzare una macchina Ubuntu avviata all’interno del sistema operativo Microsoft. Il comando seguente, eseguito da finestra del terminale Windows con i diritti amministrativi (cmd
, Esegui come amministratore), consente di creare un’istanza di Ubuntu 24.02 LTS:
wsl --install -d Ubuntu-24.04
Nella finestra di WSL, si possono quindi eseguire i comandi che seguono per preparare l’ambiente di lavoro, in pochi istanti:
# Aggiorna i pacchetti software di Ubuntu sudo apt update && sudo apt upgrade -y # Verifica che Python sia installato python3 --version # Installazione del modulo venv per Python # È utilizzato per creare ambienti virtuali isolati per Python sudo apt install python3.12-venv -y # Crea un ambiente virtuale chiamato myenv. # L'ambiente virtuale è una cartella che contiene # una copia isolata di Python e delle sue librerie. python3 -m venv myenv # Attiva l'ambiente virtuale myenv source myenv/bin/activate # Installa Selenium e la libreria usata # per fare richieste HTTP in modo semplice. pip install selenium requests # Aggiunge il repository di Google Chrome wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list # Aggiorna il sistema e installa Google Chrome sudo apt update sudo apt install google-chrome-stable # Installa Unzip sudo apt install unzip -y # Rileva la versione di Chrome installata e carica Chromedriver CHROME_VERSION=$(google-chrome --version | grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*') wget https://storage.googleapis.com/chrome-for-testing-public/$CHROME_VERSION/linux64/chromedriver-linux64.zip unzip chromedriver-linux64.zip chmod +x chromedriver-linux64 sudo mv chromedriver-linux64 /usr/local/bin/ # Verifica la versione di Chrome installata google-chrome --version
Come avviare Google Chrome per Linux
A questo punto, semplicemente digitando google-chrome
, si può configurare Chrome per Linux rispondendo alle varie domande che il browser di Google pone al primo avvio.
Con l’ultimo comando presentato al precedente paragrafo o cliccando sui tre puntini in alto a destra, quindi su Help, About Google Chrome, si può verificare che la versione del browser installata è proprio la più recente.
Selenium interagisce con le pagine Web attraverso ChromeDriver (o altri driver specifici per i vari browser). Quest’ultimo è proprio il ponte di collegamento tra Selenium e il browser, nel nostro caso Google Chrome. Quando Selenium invia comandi (come “clicca su un elemento” o “scrivi un testo in un campo di input“) al browser, ChromeDriver li riceve, li interpreta e li esegue nel contesto del browser Chrome.
Flusso di interazione
Quando si avvia, ad esempio, uno script Python con Selenium, si crea un’istanza di WebDriver (i.e. webdriver.Chrome()
) e si specifica il percorso di ChromeDriver.
Una volta che il browser è avviato, Selenium può inviare comandi al browser, come:
driver.get(url)
: per aprire una pagina Web.driver.find_element(By.ID, "element_id")
: per individuare un elemento sulla pagina.element.click()
: per simulare un clic su un elemento.element.send_keys("testo")
: per inserire del testo in un campo di input.
Dopo che un comando è eseguito, ChromeDriver restituisce i risultati a Selenium. Ad esempio, se si chiedono informazioni sul contenuto di un elemento contenuto nella pagina Web, ChromeDriver restituisce i valori inseriti. Alla fine, quando lo script termina il suo lavoro, il comando driver.quit()
arresta ChromeDriver e chiude il browser.
Pausa tra le azioni e debug
Il comando time.sleep(x)
è utilizzabile per inserire delle brevi pause tra le azioni. Queste pause consentono di evitare problemi di sincronizzazione tra le azioni di Selenium e il caricamento degli elementi nella pagina.
Quando si sviluppa codice Python (o in qualunque altro linguaggio di programmazione), bisogna tenere presente che le righe di codice sono eseguite l’una dopo l’altra, senza alcuna attesa. Se si passa da una pagina all’altra o il contenuto Web deve aggiornarsi, è indispensabile inserire delle pause per assicurarsi che Selenium possa trovare nella pagina esattamente ciò che serve all’utente.
In ogni caso, è bene aggiungere dei blocchi try
/except
nel codice per gestire eventuali errori, ad esempio nel caso in cui gli elementi HTML necessari non apparissero nella pagine.
Infine, è utile la funzione print()
per “stampare” nella finestra del terminale le informazioni inserite nelle pagine Web o recuperate da esse.
Per maggiori informazioni su Selenium, è possibile fare riferimento al sito ufficiale del progetto.
Il logo di Selenium nella pagina di apertura è di Software Freedom Conservancy.