Selenium

Utilizzo del selenio con il driver Firefox

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

Per controllare il browser web Mozilla Firefox da Selenium, devi usare il Gecko Web Driver.

In questo articolo, ti mostrerò come configurare Selenium per l'esecuzione di test del browser, automazione web, attività di web scraping 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.come. Assicurati di controllarli se hai bisogno di assistenza.

Preparazione dell'ambiente virtuale Python 3 per il progetto:

Python Virtual Environment viene utilizzato per creare una directory di progetto Python isolata. I moduli Python che installi usando PIP verranno installati solo nella directory del progetto, non globalmente.

Pitone virtualenv viene utilizzato per gestire ambienti virtuali Python.

Puoi installare Python virtualenv modulo globalmente utilizzando PIP 3 come segue:

$ sudo pip3 install virtualenv

Pitone virtualenv dovrebbe essere installato.

Crea una directory di progetto selenio-firefox/ nella directory di lavoro corrente come segue:

$ mkdir -pv selenium-firefox/drivers

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

$ cd selenio-firefox/

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

$ virtualenv .venv

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

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

$ fonte .env/bin/activate

Installazione della libreria Python Selenium:

La libreria Selenium è disponibile nel repository ufficiale Python PyPI.

Puoi installare la libreria Selenium Python usando PIP 3 come segue:

$ pip3 installa selenio

La libreria Selenium Python dovrebbe essere installata.

Installazione del driver Firefox Gecko:

Per scaricare il driver Firefox Gecko, visita la pagina delle versioni di GitHub di mozilla/geckodriver dal tuo browser web preferito.

Come puoi vedere, v0.26.0 è l'ultima versione di Firefox Gecko Driver al momento della stesura di questo articolo.

Per scaricare il driver Firefox Gecko, scorrere un po' verso il basso e fare clic sul tar di Linux geckodriver.gz archivio a seconda dell'architettura del sistema operativo.

Se stai utilizzando un sistema operativo a 32 bit, fai clic su gecodriver-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 Firefox Gecko.

Il tuo browser dovrebbe chiederti di salvare l'archivio. Selezionare Salvare il file e clicca su ok.

Il driver Firefox Gecko dovrebbe essere scaricato.

L'archivio di Firefox Gecko Driver dovrebbe essere scaricato in ~/Download directory.

Puoi estrarre il gecodriver-v0.26.0-linux64.catrame.gz archivio dal ~/Download directory per il autisti/ directory del tuo progetto con il seguente comando:

$ tar -xzf ~/Download/geckodriver-v0.26.0-linux64.catrame.gz -C driver/

Una volta estratto l'archivio di Firefox Gecko Driver, un nuovo file binario gecodriver dovrebbe essere creato nel autisti/ directory del tuo progetto, come puoi vedere nello screenshot qui sotto.

Iniziare con Selenium utilizzando Firefox Gecko Driver:

In questa sezione, ti mostrerò come impostare il tuo primo script Selenium Python per verificare se il driver Gecko di Firefox funziona.

Per prima cosa, crea un nuovo script Python ex00.pi nella directory del tuo progetto e digita le seguenti righe al suo interno.

dal webdriver di importazione del selenio
dal selenio.webdriver.Comune.chiavi di importazione chiavi
browser = driver web.Firefox(percorso_eseguibile="./drivers/gecodriver")
browser.get('https://www.linuxhint.com')
print('Titolo: %s' % browser.titolo)
browser.smettere()

Quando hai finito, salva ex00.pi Script Python.

Le righe 1 e 2 importano tutti i componenti richiesti dal selenio Libreria Python.

La riga 4 crea un oggetto driver web Firefox usando il webdriver.Firefox() metodo e lo memorizza in a browser variabile. Il percorso_eseguibile l'argomento viene utilizzato per indicare al driver Web dove cercare il file binario di Firefox Gecko Driver Driver. In questo caso, il gecodriver binario da autisti/ directory del progetto.

Sulla linea 6, browser.ottenere() il metodo si carica linuxhint.come in un browser web Firefox.

Al termine del caricamento del sito Web, la riga 7 stampa il titolo del sito Web, qui, browser.titolo la proprietà viene utilizzata per accedere al titolo del sito web.

La linea 8 chiude il browser web Firefox usando il browser.smettere() metodo.

Puoi eseguire lo script Python ex00.pi con il seguente comando:

$ python3 ex00.pi

Selenium dovrebbe aprire un browser web Firefox e visitare il linuxhint.com automaticamente il sito web.

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

Quindi, Selenium funziona correttamente con il driver Firefox Gecko.

Esempio 01: esecuzione di Firefox in modalità Headless utilizzando Selenium

Puoi anche eseguire Selenium con Firefox Gecko Driver in modalità headless. La modalità headless di Selenium Firefox non richiede alcuna interfaccia utente grafica installata sul computer. Quindi, sarai in grado di eseguire Selenium Firefox in qualsiasi server headless Linux.

Per prima cosa, crea un nuovo script Python ex01.pi nella directory del tuo progetto e digita le seguenti righe di codici al suo interno.

dal webdriver di importazione del selenio
dal selenio.webdriver.firefox.opzioni di importazione Opzioni
dal selenio.webdriver.Comune.chiavi di importazione chiavi
FirefoxOpzioni = Opzioni()
FirefoxOpzioni.add_argument("-headless")
browser = driver web.Firefox(percorso_eseguibile="./drivers/geckodriver", options=opzioni firefox)
browser.get('https://www.linuxhint.com')
print('Titolo: %s' % browser.titolo)
browser.smettere()

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

La riga 1 e la riga 3 sono le stesse della riga 1 e della riga 2 di ex00.pi Script Python.

La riga 2 importa Firefox Opzioni dal selenio biblioteca.

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

La riga 6 usa il FirefoxOpzioni.add_argument() metodo per aggiungere il -senza testa Flag della riga di comando di Firefox per il to FirefoxOpzioni oggetto.

Sulla linea 8, opzioni l'argomento è usato per passare il FirefoxOpzioni durante l'inizializzazione del driver web di Firefox utilizzando il webdriver.Firefox() metodo.

Il resto delle linee del ex01.pi lo script è lo stesso di ex00.pi.

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

$ python3 ex01.pi

Come puoi vedere, il titolo del sito web (linuxhint.com) viene stampato sulla console senza aprire alcuna versione grafica del browser web Firefox.

Come puoi vedere, Selenium sta lavorando anche su un ambiente senza testa Ubuntu in cui non ho installato un'interfaccia utente grafica.

Ora che sai come passare il -senza testa Flag/opzione della riga di comando di Firefox utilizzando il driver Selenium Firefox Gecko, è possibile passare anche qualsiasi altro flag/opzione della riga di comando di Firefox.

Puoi trovare tutti i flag/opzioni della riga di comando di Firefox supportati nelle Opzioni della riga di comando - Mozilla | Pagina MDN.

Esempio 02: estrazione di Lorem Ipsum usando il selenio

In questa sezione, ti mostrerò come eseguire lo scraping web di base utilizzando Selenium Firefox Gecko Driver.

Per prima cosa, visita la pagina del generatore di Lorem Ipsum dal browser web Firefox. Come puoi vedere, la pagina ha generato 5 paragrafi casuali. Estraiamo tutto il testo generato (tutti e 5 i paragrafi) da questa pagina.

Prima di iniziare a estrarre informazioni da una pagina web, devi conoscere la struttura HTML del contenuto della pagina web.

Puoi trovare facilmente la struttura HTML del contenuto che desideri estrarre utilizzando il pulsante Strumento per sviluppatori Firefox. Aprire Strumento per sviluppatori Firefox, premere il tasto destro del mouse (RMB) sulla pagina e cliccare su Ispeziona elemento (Q).

Strumento per sviluppatori Firefox dovrebbe essere aperto. Clicca sul Icona di ispezione () come indicato nello screenshot qui sotto.

Passa il mouse sopra il primo paragrafo, come mostrato nello screenshot qui sotto. Quindi, premi il tasto sinistro del mouse (LMB) per selezionarlo.

La struttura HTML dei paragrafi dovrebbe essere visualizzata nel Ispezionare scheda del Strumento per sviluppatori Firefox. Come puoi vedere, i paragrafi lorem ipsum generati sono all'interno di a div tag che ha il id labbra.

Per estrarre i paragrafi lorem ipsum usando Selenium Firefox Gecko Driver, crea un nuovo script Python ex02.pi nella directory del tuo progetto e digita le seguenti righe di codici al suo interno.

dal webdriver di importazione del selenio
dal selenio.webdriver.firefox.opzioni di importazione Opzioni
dal selenio.webdriver.Comune.chiavi di importazione chiavi
FirefoxOpzioni = Opzioni()
FirefoxOpzioni.add_argument("-headless")
browser = driver web.Firefox(percorso_eseguibile="./drivers/geckodriver", options=opzioni firefox)
browser.get('https://www.labbra.com/feed/html')
Lipsum = browser.find_element_by_id('lipsum')
stampa (lipsum.testo)
browser.smettere()

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

La riga 10 carica la pagina del generatore di lorem ipsum usando il tasto browser.ottenere() metodo.

Il contenuto del lorem ipsum è all'interno di un div taggare con l'id labbra. La riga 12 usa il browser.trova_elemento_per_id() metodo per selezionarlo dalla pagina web e memorizzarlo nel labbra variabile.

La riga 13 stampa i contenuti di lorem ipsum generati sulla console. qui, il testo la proprietà viene utilizzata per accedere al contenuto del div elemento con l'id labbra.

Ora esegui lo script Python ex02.pi come segue:

$ python3 ex02.pi

Come puoi vedere, Selenium ha estratto correttamente i contenuti di lorem ipsum dalla pagina web.

Esecuzione dello script Python ex02.pi di nuovo 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 scrapping web da un sito Web che utilizza il driver Selenium Firefox Gecko in modalità headless.

Per prima cosa, visita il generatore di nomi casuali.informazioni dal browser web Firefox. Questo sito Web genererà 10 nomi casuali ogni volta che ricarichi la pagina, come puoi vedere nello screenshot qui sotto. Il nostro obiettivo è estrarre questi nomi casuali usando Selenium in modalità headless.

Per scoprire la struttura HTML dell'elenco, devi aprire il Strumento per sviluppatori Firefox. Per farlo, premi il tasto destro del mouse (RMB) sulla pagina e clicca su Ispeziona elemento (Q).

Strumento per sviluppatori Firefox dovrebbe essere aperto. Clicca sul Icona di ispezione () come indicato nello screenshot qui sotto.

Quindi, passa il mouse sopra l'elenco di Nomi casuali. L'elenco dovrebbe essere evidenziato come indicato nello screenshot qui sotto. Quindi, premere il tasto sinistro del mouse (LMB) per selezionare l'elenco.

Il codice HTML della lista dovrebbe essere evidenziato nel Ispettore scheda del 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. Al suo interno, abbiamo un vecchio elemento con il classe nome Lista di nomi. Dentro il vecchio 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 vecchi.nameList li (basta sostituire il > segni con spazi)

Per estrarre questi nomi casuali, crea un nuovo script Python ex03.pi e digita le seguenti righe di codici al suo interno.

dal webdriver di importazione del selenio
dal selenio.webdriver.firefox.opzioni di importazione Opzioni
dal selenio.webdriver.Comune.chiavi di importazione chiavi
FirefoxOpzioni = Opzioni()
FirefoxOpzioni.add_argument("-headless")
browser = driver web.Firefox(percorso_eseguibile="./drivers/geckodriver", options=opzioni firefox)
browser.get("http://generatore-nome-casuale.Informazioni/")
nameList = browser.find_elements_by_css_selector('div.risultati vecchi.nameList li')
per nome in lista nomi:
print(nome.testo)
browser.smettere()

Una volta che hai finito, salva il ex03.pi Script 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 vecchi.nameList li per trovare l'elenco dei nomi. Quindi, l'elenco dei nomi viene memorizzato nel Lista di nomi variabile.

Nelle righe 13 e 14, a per loop viene utilizzato per scorrere 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.pi come segue:

$ python3 ex03.pi

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

Se esegui lo script una seconda volta, dovrebbe restituire un nuovo elenco di nomi casuali, come puoi vedere nello screenshot qui sotto.

Conclusione:

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

I migliori giochi da riga di comando per Linux
La riga di comando non è solo il tuo più grande alleato quando usi Linux, ma può anche essere una fonte di intrattenimento perché puoi usarla per gioc...
Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...
Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...