Selenium è un framework piuttosto articolato. Utilizzabile in vari linguaggi di programmazione ma focalizzato su uno scopo specifico: accedere a pagine web, mediante un reale browser, per interagire con applicazioni web come farebbe un utente umano.
Caratteristiche di Selenium
Si tratta di un progetto ormai leader nel suo ambito con tanti anni di esperienza alle spalle. Nacque nel 2004 a Chicago ad opera di Jason Huggins di ThoughtWorks e attirò subito attenzione. Soprattutto per la sua capacità di venire incontro alla crescente necessità di testing per un Web in continua espansione. L'interesse che ha suscitato è sempre aumentato nel tempo tanto da portare, grazie al contributo della sua folta community, alla nascita di un vero e proprio ecosistema.
Sommariamente, possiamo vedere il progetto suddiviso in tre grandi aree:
- Webdriver, quello su cui ci concentreremo, dedicato per lo più all'esecuzione di test mediante browser. Pilotando il tutto con librerie sviluppate per diversi linguaggi di programmazione;
- IDE, un progetto basato su add-on per Chrome, Firefox ed Edge. Finalizzato alla registrazione di bug che si verificano durante l'utilizzo di applicazioni web. Potremmo definire questo una sorta di approccio low-code;
- Grid, una soluzione per creare test scalabili da distribuire su più macchine per eseguirli con molte possibili combinazioni di browser e sistemi operativi. Tale soluzione in genere non è indispensabile ma risulta ottima per la messa in opera di test su vasta scala.
Segnaliamo che la documentazione ufficiale del progetto è reperibile alla pagina Documentation sulla quale è possibile rinvenire esempi per vari linguaggi di programmazione. Tuttavia, ne esiste un'altra dedicata agli utenti Python.
Il nostro primo passo sarà quello di preparare un ambiente di lavoro per l'utilizzo di Selenium con Python. Come si può evincere dalla documentazione, si può utilizzare questo framework anche con altri linguaggi quali Java, JavaScript, C#, Ruby e Kotlin.
La libreria Python è disponibile in PyPI e può essere installata con il comando:
pip install selenium
Gli ambienti virtuali
A questo punto giova ricordare che per preparare un ambiente in maniera coerente e ordinata nel proprio sistema sarebbe raccomandabile (ma non obbligatorio) fare uso dei cosiddetti ambienti virtuali (in Inglese, virtual environment). Una sorta di contenitori in cui si installano librerie invocabili solo nel momento in cui l'ambiente virtuale viene attivato.
I vantaggi principali di questo approccio sono:
- inserimento di tutte le dipendenze in una singola cartella nel sistema operativo. Alla cancellazione di questa, tutte le librerie installate verranno rimosse e lo spazio occupato sarà liberato senza lasciare tracce in altre posizioni non sempre evidenti del sistema operativo;
- tutte le dipendenze installate in un ambiente virtuale saranno connotate da versioni coerenti tra loro. Questo permetterà, ad esempio, di avere la stessa libreria installata con versioni diverse in ambienti virtuali differenti, ognuno specifico per un progetto. Senza il loro utilizzo si finirebbe infatti per aggiornare versioni di dipendenze preesistenti, magari creando conflitti con altri progetti basati su versioni precedenti.
Predisposizione di un ambiente virtuale per Selenium
Per creare un ambiente virtuale una delle soluzioni più comuni, sebbene non l'unica, è la libreria venv che può installata nel proprio ambiente di lavoro con:
pip install venv
Fatto ciò, possiamo procedere alla creazione di un nuovo ambiente con il seguente comando, comune a Windows e Linux. Rappresentando con WEBTEST
la cartella di residenza del virtual environment (da personalizzare a proprio piacere) digitiamo:
python -m venv WEBTEST
A questo punto il virtual environment sarà pronto, con una struttura di sottocartelle interna che varierà a seconda del sistema operativo, e non dovremo fare altro che procedere alla sua attivazione che sarà su Windows:
> WEBTEST\Scripts\activate
(WEBTEST) >pip list
Package Version
---------- -------
pip 23.0.1
setuptools 65.5.0
e su Linux:
$ source WEBTEST/bin/activate
(WEBTEST) $ pip list
Package Version
------------- -------
pip 20.3.4
pkg-resources 0.0.0
setuptools 44.1.1
Da questo momento in poi, ogni volta che invocheremo pip
o python
verranno rese disponibili solo le librerie presenti nell'ambiente virtuale e ciò fino alla sua disattivazione (comando deactivate
). Si noti, in particolare, che con l'annotazione (WEBTEST)
ci viene ricordato dal prompt stesso che l'ambiente è attivo. Con pip list
possiamo quindi sapere quali librerie sono installate in esso. Trattandosi di un ambiente nuovo, come si può notare, all'interno è presente un allestimento minimale standard.
In entrambi i sistemi potremo procedere ora con l'installazione di Selenium:
$ pip install selenium
e da questo momento in poi saremo pronti per utilizzarlo.
Ricordiamo, da ultimo, che la cartella dell'ambiente virtuale serve solo a contenere il necessario per attivarlo, non sarà mai necessario lavorarci all'interno o inserirvi i nostri script. Al termine del lavoro, come già accennato, potremo disattivare l'ambiente semplicemente digitando deactivate
. Da quel momento in poi i comandi pip
e python
faranno nuovamente riferimento agli strumenti installati a livello di sistema.