Utilizzo del selenio con il driver Firefox

Utilizzo del selenio con il driver Firefox
Selenio è un ottimo strumento per i test del browser, l'automazione Web e il raschiatura web. Selenio può controllare la maggior parte dei browser Web moderni. io.e., Firefox, Chrome, Chromium, Opera, Apple Safari. Per controllare un browser, Selenio ha bisogno di uno strumento chiamato Web Driver. La maggior parte dei moderni fornitori di browser fornisce il software Web Driver per i loro browser Web.

Per controllare il browser Web Mozilla Firefox da Selenio, è necessario utilizzare il driver web Gecko.

In questo articolo, ti mostrerò come impostare Selenio per eseguire test del browser, automazione Web, attività di raschiatura Web utilizzando il browser Web Mozilla Firefox. Quindi iniziamo.

Prerequisiti:

Per provare i comandi e gli esempi di questo articolo, devi avere,

1) Una distribuzione Linux (preferibilmente Ubuntu) installata sul tuo computer.
2) Python 3 installato sul tuo computer.
3) PIP 3 installato sul tuo computer.
4) Mozilla Firefox installato sul tuo computer.

Puoi trovare molti articoli su questi argomenti su Linuxhint.com. Assicurati di verificarli se hai bisogno di assistenza.

Preparare l'ambiente virtuale di Python 3 per il progetto:

Python Virtual Environment viene utilizzato per creare una directory di progetto Python isolato. I moduli Python installati utilizzando PIP saranno installati solo nella directory del progetto, non a livello globale.

Pitone Virtualenv Il modulo viene utilizzato per gestire gli ambienti virtuali di Python.

Puoi installare Python Virtualenv Modulo a livello globale usando PIP 3 come segue:

$ sudo pip3 installa virtualivv

Pitone Virtualenv dovrebbe essere installato.

Crea una directory di progetto selenio-firefox/ Nella tua attuale directory di lavoro come segue:

$ mkdir -pv selenio -firefox/driver

Passa alla directory del progetto appena creato selenio-firefox/ come segue:

$ cd selenio-firefox/

Crea un ambiente virtuale Python nella directory del progetto con il seguente comando:

$ virtualenv .Venv

L'ambiente virtuale di Python dovrebbe essere creato nella directory del progetto.

Attiva l'ambiente virtuale Python dalla directory del progetto con il seguente comando:

$ fonte .env/bin/attiva

Installazione della libreria di selenio Python:

La biblioteca Selenio è disponibile nel repository ufficiale Python PyPI.

È possibile installare la libreria di Selenio Python utilizzando PIP 3 come segue:

$ PIP3 Installa selenio

La libreria di Selenio Python dovrebbe essere installata.

Installazione del driver GECKO Firefox:

Per scaricare il driver Firefox Gecko, visitare la pagina di Github Releases di Mozilla/Geckodriver dal tuo browser Web preferito.

Come puoi vedere, V0.26.0 è l'ultima versione di Firefox Gecko Driver al momento di questa scrittura.

Per scaricare il driver GECKO Firefox, scorrere un po 'verso il basso e fare clic su Linux Geckodriver Tar.Archivio GZ a seconda dell'architettura del sistema operativo.

Se stai utilizzando un sistema operativo a 32 bit, fai clic su Geckodriver-V0.26.0-Linux32.catrame.Gz collegamento.

Se stai utilizzando un sistema operativo a 64 bit, fai clic su Geckodriver-V0.26.0-Linuxx64.catrame.Gz collegamento.

Scaricherò la versione a 64 bit del driver GECKO Firefox.

Il tuo browser dovrebbe chiederti di salvare l'archivio. Selezionare Salvare il file e fare clic su OK.

Il driver Firefox Gecko dovrebbe essere scaricato.

L'archivio del driver GECKO Firefox dovrebbe essere scaricato in ~/Download directory.

Puoi estrarre il Geckodriver-V0.26.0-Linux64.catrame.Gz Archivio dal ~/Download directory al autisti/ Directory del tuo progetto con il seguente comando:

$ tar -xzf ~/downloads/geckodriver -v0.26.0-Linux64.catrame.GZ -C Driver/

Una volta estratto l'archivio del driver GECKO Firefox, un nuovo file binario geckodriver dovrebbe essere creato in autisti/ Directory del tuo progetto, come puoi vedere nello screenshot qui sotto.

Iniziare con Selenio usando il driver di geco Firefox:

In questa sezione, ti mostrerò come impostare il tuo primo script di selenio Python per verificare se il driver di geco Firefox sta funzionando.

Innanzitutto, crea un nuovo script Python Ex00.Py nella directory del tuo progetto e digita le seguenti righe in esso.

dal webdriver di import selenio
da selenio.Webdriver.comune.tasti di importazione delle chiavi
browser = webdriver.Firefox (Executable_Path = "./driver/geckodriver ")
browser.get ('https: // www.Linuxhint.com ')
Stampa ('Titolo: % S' % browser.titolo)
browser.esentato()

Una volta che hai finito, salva Ex00.Py Script di Python.

La riga 1 e 2 importano tutti i componenti richiesti da selenio Biblioteca Python.

La riga 4 crea un oggetto driver Web Firefox usando il Webdriver.Firefox () metodo e lo memorizza in a browser variabile. IL Executable_Path L'argomento viene utilizzato per dire al driver web dove cercare il binario del driver gecko Firefox. In questo caso, il geckodriver binario dal autisti/ directory del progetto.

Sulla riga 6, browser.Ottenere() Il metodo si carica Linuxhint.com In un browser Web Firefox.

Una volta che il sito Web termina il caricamento, la riga 7 stampa il titolo del sito Web, qui, browser.titolo La proprietà viene utilizzata per accedere al titolo del sito Web.

La riga 8 chiude il browser Web Firefox utilizzando il browser.esentato() metodo.

Puoi eseguire lo script Python Ex00.Py con il seguente comando:

$ python3 ex00.Py

Selenio dovrebbe aprire un browser Web Firefox e visitare il Linuxhint.sito Web com automaticamente.

Una volta caricata la pagina, dovrebbe stampare il titolo del sito Web sulla console e il browser Web dovrebbe chiudere automaticamente.

Quindi, il selenio sta lavorando correttamente con il driver di geco Firefox.

Esempio 01: eseguire Firefox in modalità Headless usando Selenio

Puoi anche eseguire il selenio con il driver GECKO Firefox in modalità Headless. Selenium Firefox La modalità senza testa non richiede alcuna interfaccia utente grafica installata sul tuo computer. Quindi, sarai in grado di eseguire Selenium Firefox in qualsiasi server Linux Headless.

Innanzitutto, crea un nuovo script Python ex01.Py nella directory del tuo progetto e digita le seguenti righe di codici in esso.

dal webdriver di import selenio
da selenio.Webdriver.Firefox.opzioni di importazione delle opzioni
da selenio.Webdriver.comune.tasti di importazione delle chiavi
FireFoxoptions = Options ()
Firefoxoptions.add_argument ("-Headless")
browser = webdriver.Firefox (Executable_Path = "./driver/geckodriver ", options = Firefoxoptions)
browser.get ('https: // www.Linuxhint.com ')
Stampa ('Titolo: % S' % browser.titolo)
browser.esentato()

Una volta che hai finito, salva il ex01.Py Script di Python.

La riga 1 e la riga 3 sono uguali della riga 1 e della linea 2 di Ex00.Py Script di Python.

Linea 2 importa Firefox Opzioni dal selenio biblioteca.

La riga 5 crea un oggetto Opzioni Firefox e lo memorizza in Firefoxoptions variabile.

La riga 6 utilizza il Firefoxoptions.add_argument () metodo per aggiungere il -senza testa Flag riga di comando di Firefox al Firefoxoptions oggetto.

Sulla riga 8, opzioni L'argomento viene utilizzato per passare il Firefoxoptions mentre inizializza il driver Web Firefox utilizzando il Webdriver.Firefox () metodo.

Il resto delle linee del ex01.Py lo script è lo stesso del Ex00.Py.

Puoi eseguire lo script Python ex01.Py con il seguente comando:

$ Python3 Ex01.Py

Come puoi vedere, il titolo del sito Web (Linuxhint.com) è stampato sulla console senza aprire alcuna versione grafica del browser Web Firefox.

Come puoi vedere, Selenio sta anche lavorando su un ambiente Ubuntu senza Headless in cui non ho interfaccia utente grafica installata.

Ora che sai come superare il -senza testa Funga/opzione Firefox Command-Line Utilizzo del driver Selenium Firefox Gecko, è possibile passare anche altri flag/opzioni di Firefox Command-Line.

È possibile trovare tutti i flag di riga di comando Firefox supportati nelle opzioni della riga di comando - Mozilla | Pagina MDN.

Esempio 02: estrazione di Lorem ipsum usando selenio

In questa sezione, ti mostrerò come eseguire la demolizione Web di base usando Selenium Firefox Gecko Driver.

Innanzitutto, visita la pagina del generatore di ipsum di Lorem dal browser Web Firefox. Come puoi vedere, la pagina ha generato 5 paragrafi casuali. Estrariamo tutto il testo generato (tutti e 5 i paragrafi) da questa pagina.

Prima di iniziare a estrarre informazioni da una pagina Web, è necessario conoscere la struttura HTML del contenuto della pagina Web.

Puoi facilmente trovare la struttura HTML del contenuto che si desidera estrarre usando il Strumento per sviluppatori Firefox. Aprire Strumento per sviluppatori Firefox, Premere il pulsante destro del mouse (RMB) nella pagina e fare clic su Ispeziona Elemento (Q).

Strumento per sviluppatori Firefox dovrebbe essere aperto. Clicca sul Ispezionare l'icona () come contrassegnato nello screenshot seguente.

Passa il mouse nel primo paragrafo, come mostrato nello screenshot seguente. Quindi, premere il pulsante del mouse sinistro (LMB) per selezionarlo.

La struttura HTML dei paragrafi deve essere visualizzata in Ispezionare Tab di Strumento per sviluppatori Firefox. Come puoi vedere, i paragrafi di ipsum di Lorem generati sono all'interno di a div tag che ha il id lipsum.

Per estrarre i paragrafi di ipsum di Lorem usando Selenium Firefox Gecko Driver, crea un nuovo script Python ex02.Py nella directory del tuo progetto e digita le seguenti righe di codici in esso.

dal webdriver di import selenio
da selenio.Webdriver.Firefox.opzioni di importazione delle opzioni
da selenio.Webdriver.comune.tasti di importazione delle chiavi
FireFoxoptions = Options ()
Firefoxoptions.add_argument ("-Headless")
browser = webdriver.Firefox (Executable_Path = "./driver/geckodriver ", options = Firefoxoptions)
browser.get ('https: // www.lipsum.com/feed/html ')
Lipsum = browser.find_element_by_id ('lipsum')
Stampa (lipsum.testo)
browser.esentato()

Una volta che hai finito, salva il ex02.Py Script di Python.

La riga 10 carica la pagina del generatore di ipsum di Lorem utilizzando la browser.Ottenere() metodo.

Il contenuto di ipsum di Lorem è all'interno di a div Tag con l'ID lipsum. La riga 12 utilizza il browser.find_element_by_id () metodo per selezionarlo dalla pagina web e archiviarlo in lipsum variabile.

La riga 13 stampa il contenuto di ipsum di Lorem generato sulla console. Qui, il testo la proprietà viene utilizzata per accedere al contenuto del div Elemento con l'ID lipsum.

Ora, esegui lo script Python ex02.Py come segue:

$ Python3 Ex02.Py

Come puoi vedere, il selenio ha estratto correttamente il contenuto di ipsum di Lorem dalla pagina web.

Esecuzione dello script Python ex02.Py Ancora una volta ti darà un output diverso, come puoi vedere nello screenshot qui sotto.

Esempio 03: Estrazione dei dati dell'elenco utilizzando il selenio

In questa sezione, ti mostrerò un esempio di dati dell'elenco di rotta Web da un sito Web utilizzando il driver di geco Firefox Selenium in modalità Headless.

Innanzitutto, visitare il generatore di nome casuale.Informazioni dal browser Web Firefox. Questo sito Web genererà 10 nomi casuali ogni volta che si ricarichi la pagina, come puoi vedere nello screenshot seguente. Il nostro obiettivo è estrarre questi nomi casuali usando il selenio in modalità senza testa.

Per scoprire la struttura HTML dell'elenco, devi aprire il Strumento per sviluppatori Firefox. Per fare ciò, premere il pulsante destro del mouse (RMB) sulla pagina e fare clic su Ispeziona Elemento (Q).

Strumento per sviluppatori Firefox dovrebbe essere aperto. Clicca sul Ispezionare l'icona () come contrassegnato nello screenshot seguente.

Quindi, librami nell'elenco di Nomi casuali. L'elenco dovrebbe essere evidenziato come contrassegnato nello screenshot di seguito. Quindi, premere il pulsante del mouse sinistro (LMB) per selezionare l'elenco.

Il codice HTML dell'elenco dovrebbe essere evidenziato nel Ispettore Tab di Strumento per sviluppatori Firefox. Qui, l'elenco dei nomi casuali è all'interno di a div elemento. IL div L'elemento ha il classe nome Risultati. All'interno, abbiamo un ol elemento con il classe nome Lista di nomi. Dentro il ol elemento, ciascuno dei nomi è in a li elemento.

Da questo possiamo dire che per arrivare al li Tag, dobbiamo seguire div.Risultati> ol.Namelist> li

Quindi, il nostro selettore CSS sarà div.Risultati ol.Namelist Li (Basta sostituire il > segni con spazio bianco)

Per estrarre questi nomi casuali, crea un nuovo script Python ex03.Py e digitare le seguenti righe di codici in esso.

dal webdriver di import selenio
da selenio.Webdriver.Firefox.opzioni di importazione delle opzioni
da selenio.Webdriver.comune.tasti di importazione delle chiavi
FireFoxoptions = Options ()
Firefoxoptions.add_argument ("-Headless")
browser = webdriver.Firefox (Executable_Path = "./driver/geckodriver ", options = Firefoxoptions)
browser.get ("http: // casual-name-generator.informazioni/")
Namelist = browser.find_elements_by_css_selector ('div.Risultati ol.Namelist Li ')
Per il nome in Namelist:
Stampa (nome.testo)
browser.esentato()

Una volta che hai finito, salva il ex03.Py Script di Python.

La riga 10 carica il sito Web del generatore di nomi casuali utilizzando il browser.Ottenere() metodo.

La riga 11 seleziona l'elenco dei nomi utilizzando il browser.find_elements_by_css_selector () metodo. Questo metodo utilizza il selettore CSS div.Risultati ol.Namelist Li Per trovare l'elenco dei nomi. Quindi, l'elenco dei nomi è archiviato in Lista di nomi variabile.

Nelle righe 13 e 14, a per Loop è usato per iterare attraverso il Lista di nomi lista di li elementi. In ogni iterazione, il contenuto del li L'elemento è stampato sulla console.

Ora, esegui lo script Python ex03.Py come segue:

$ Python3 Ex03.Py

Come puoi vedere, lo script Python ex03.Py Prese tutti i nomi casuali dalla pagina web.

Se si esegue lo script una seconda volta, dovrebbe restituire un nuovo elenco di nomi casuali, come puoi vedere nello screenshot seguente.

Conclusione:

Questo articolo dovrebbe aiutarti a iniziare con Selenio utilizzando il browser Web Firefox. Dovresti essere in grado di impostare un progetto di driver GECKO Firefox Selenium abbastanza facilmente ed eseguire i test del browser, l'automazione web e le attività di raschiatura Web.