Selenium

Automazione del browser tramite selenio (Python)

Automazione del browser tramite selenio (Python)
SELENIO è uno strumento basato sul web e open source che viene utilizzato per controllare il browser web attraverso molti linguaggi di programmazione. È uno strumento di terze parti ed è disponibile per molti linguaggi di programmazione (e.g. Java, Python, C#, PHP ecc.). Ha il supporto per quasi tutti i browser. In questo tutorial, vedremo come utilizzare Selenium con Python perché Python fornisce un ambiente confortevole per utilizzare questo strumento. Selenium API for Python consente al tuo programma di controllare direttamente il tuo browser in modo simile a come fa un essere umano. Può aprire nuove schede per te, compilare le tue informazioni, inviare moduli, fare clic su collegamenti diversi e altre azioni simili. Qui vedremo come automatizziamo il nostro browser web usando il selenio con Python.

Installazione di selenio

Prima di usare SELENIO modulo in python, dobbiamo installarlo. Esegui il seguente comando nel terminale per installarlo.

pip installa il selenio

O

pip3 installa selenio

Questo verrà installato SELENIO modulo e ora è pronto per l'uso.

Driver Web

Prima di automatizzare il browser web utilizzando il modulo SELENIUM, è richiesto il driver web del browser scelto. Per automatizzare il browser Chrome dobbiamo avere il driver web Chrome. Il percorso, dove è posizionato il file del driver web, viene passato come argomento. Il driver Web interagisce con il browser Web tramite un protocollo. Vai al seguente link per scaricare i driver Web di browser diversi.

https://www.selenio.org/scarica/

Iniziare

Dopo aver installato i moduli richiesti, puoi aprire la CLI di Python e iniziare a giocare con il tuo browser. Quindi importiamo prima webdriver e altri moduli, questi moduli e classi consentiranno al tuo programma Python di inviare sequenze di tasti e altre informazioni al tuo browser.

C:\Utenti\Usama Azad>python
Pitone 3.6.4 (v3.6.4:d48eceb, 19 dic 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] su win32
Digita "aiuto", "copyright", "crediti" o "licenza" per ulteriori informazioni.
>>> dal webdriver di importazione del selenio
>>> dal selenio.webdriver.Comune.chiavi di importazione chiavi
#percorso ai tuoi driver Chrome chrome
>>> driver = driver web.Chrome('C:\driver del cromo')

Si aprirà una nuova finestra del browser Chrome per te. Ora puoi ottenere il selenio per accedere a qualsiasi sito Web utilizzando .get() metodo. Questo metodo apre il sito Web e attende che venga caricato, quindi puoi inserire il tuo prossimo comando.

>>> autista.get("https://www.Facebook.com")

Come trovare elementi in una pagina Web

Possiamo trovare un elemento specifico su una pagina web seguendo il metodo.

Individuazione degli elementi utilizzando il selenio

Per localizzare elementi su una pagina web usiamo 'trova_elemento' metodo. Di seguito sono riportati i 'trova_elemento' metodi disponibili in SELENIO.

Utilizzando i metodi di cui sopra, possiamo individuare un elemento in una pagina Web e utilizzarlo nel nostro codice di automazione.

Facendo clic su diversi elementi della pagina Web

Il metodo click() in selenio può essere utilizzato per fare clic su diversi collegamenti ed elementi dei pulsanti che hai trovato utilizzando i metodi sopra. Ad esempio, vuoi fare clic su "Account dimenticato"?"sulla pagina Facebook

>>> link_button = driver.find_element_by_link_text('Account dimenticato?')
>>> link_button.clic()

Invia chiavi speciali

Selenium ha anche un modulo che ti permette di inviare chiavi speciali (e.g, Invio, Esc, Pagina giù, Pagina su ecc.) durante la navigazione sul Web. Devi importare questo modulo usando il seguente comando

>>> dal selenio.webdriver.Comune.chiavi di importazione chiavi

Ad esempio, stai leggendo un articolo su Wikipedia sulla storia degli Stati Uniti, ma sei troppo pigro per premere il tasto freccia GIDOWN dopo un po'. Puoi automatizzare inviando questa chiave al browser usando Selenium

dal webdriver di importazione del selenio
dal selenio.webdriver.Comune.chiavi di importazione chiavi
tempo di importazione
driver = driver web.Chrome('C:\driver del cromo')
#Apri il link dell'articolo usando il metodo get
autista.get("https://en.wikipedia.org/wiki/Stati_Uniti")
#Inizia dall'inizio della pagina
elem = driver.find_element_by_tag_name('html')
mentre vero:
 
tempo.dormire(5)
elemento.send_keys(Chiavi.GIÙ)

Come automatizzare il browser

In questa sezione vedremo come automatizzare il nostro browser web con l'aiuto di alcuni casi d'uso.

Accedi automaticamente ai siti di social media

Con l'automazione web, puoi facilmente rendere automatico il processo di accesso. Se controlli regolarmente i tuoi siti Web di social media a un'ora specifica (diciamo le 20:00), è bene automatizzare questo processo. Di seguito è riportato il codice per automatizzare il processo di accesso a due siti di social media "facebook" e "twitter" utilizzando SELENIO modulo in Python.

# importazione di webdriver dal modulo selenium
dal webdriver di importazione del selenio
 
# importazione di chiavi speciali dal selenio
dal selenio.webdriver.Comune.chiavi di importazione chiavi
 
# creazione dell'oggetto 'driver' per 'Google-Chrome'
driver = driver web.Chrome('percorso al driver Chrome')
 
# massimizzare la finestra
autista.massimizza_finestra()
 
# apertura facebook
autista.ottenere('http://www.Facebook.come')
 
# individuazione dell'elemento "Email o telefono" utilizzando l'attributo "id"
nomeutente = autista.find_element_by_id('email')
 
# Inserimento nome utente o email per facebook
nome utente.send_keys('Inserisci nome utente/e-mail')
 
# individuazione dell'elemento 'Password' utilizzando l'attributo 'id'
password = conducente.find_element_by_id('pass')
 
# inserimento password per facebook
parola d'ordine.send_keys("Inserisci la password")
 
# individuazione dell'elemento 'pulsante di accesso' utilizzando l'attributo 'id' e premendo 'Invio'
autista.find_element_by_id('u_0_b').send_keys(Chiavi.ACCEDERE)
 
# apertura di una nuova scheda per twitter
autista.execute_script("finestra.open('http://www.twitter.com', 'tab2');")
 
# passaggio a una nuova scheda
autista.switch_to_window('tab2')
 
#localizzare l'elemento 'log in' e fare clic su di esso
autista.find_element_by_xpath('//*[@id="doc"]/div/div[1]/div[1]/div[2]/div[1]').clic()
 
# individuazione dell'elemento "Telefono, e-mail o nome utente"
nomeutente = autista.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/
fieldset/div[1]/input')
 
# inserendo il nome utente per twitter
nome utente.send_keys('Inserisci nome utente')
 
# individuazione dell'elemento 'Password'
password = conducente.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/
fieldset/div[2]/input')
# inserimento password per twitter
parola d'ordine.send_keys('Inserisci password')
# individuare il pulsante "accedi" e fare clic su di esso
autista.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button')
.clic()

Il codice sopra automatizza il browser per accedere ai siti Web dei social media. Prima di tutto abbiamo creato un oggetto del nostro browser preferito. In questo caso d'uso, abbiamo preso 'Chrome' come browser. Per creare l'oggetto abbiamo passato il percorso del nostro 'chromedriver' come argomento. Poi abbiamo inserito l'url di facebook ed effettuato l'accesso a Facebook selezionando elementi e passando username e password.

Dopo questo abbiamo aperto una nuova scheda e inserito l'url di twitter. Successivamente siamo passati alla nuova scheda poiché il controllo del codice era ancora sulla prima scheda sebbene la seconda scheda fosse aperta. Quindi abbiamo effettuato l'accesso a twitter selezionando elementi e passando nome utente e password.

Automazione dello shopping online

Un altro buon esempio di automazione del browser potrebbe essere lo shopping online. Ad esempio, vuoi acquistare una fotocamera online ma i prezzi sono troppo alti. Controlli ogni giorno se il prezzo è nella tua gamma o no. Questa attività può essere automatizzata utilizzando SELENIO e puoi evitare il controllo del prezzo tutti i giorni. Il seguente codice ti informerà tramite posta se il prezzo del prodotto desiderato è conveniente o meno. Se il prodotto desiderato è in vendita, il programma ti avviserà tramite e-mail.

# importazione di webdriver dal modulo selenium
dal webdriver di importazione del selenio
 
# importazione del modulo smtplib per l'invio della posta
import smtplib
 
# definizione della funzione di posta per informare tramite e-mail
def posta():
 
# stabilire una connessione al server gmail con nome di dominio e numero di porta. 
Questo differisce con ogni provider di posta elettronica
connessione = smtplib.SMTP('smtp.gmail.com',587)
 
# saluta il server
connessione.ehi()
 
# avvio della connessione TLS crittografata
connessione.inizio()
 
# accedi al server gmail con il tuo indirizzo principale e la tua password
connessione.login('indirizzo e-mail del mittente', 'password')
 
# invio di una mail a te stesso informandoti del prezzo della fotocamera
connessione.sendmail('indirizzo di posta del mittente', 'indirizzo di posta del destinatario',
"Oggetto: puoi acquistare la fotocamera")
 
# terminazione connessione
connessione.smettere()
La funzione #mail finisce qui
 
# avvio di google chrome fornendo il percorso di chromedriver come argomento
driver = driver web.Chrome('percorso per chromedrive')
 
# minimizzazione della finestra di Chrome
autista.minimizza_finestra()
 
# apertura draz.sito pk
autista.ottenere('https://www.daraz.pk/')
 
# individuazione dell'elemento della barra di ricerca utilizzando l'attributo id per cercare la telecamera
searchBar = driver.find_element_by_id('q')
 
#fotocamera di scrittura nella barra di ricerca
barra di ricerca.send_keys('fotocamera')
 
#localizzazione dell'elemento del pulsante di ricerca utilizzando xpath dell'elemento
ricerca = autista.find_element_by_xpath('//*[@id="topActionHeader"]/div/div[2]/div/div[2]
/form/div/div[2]/pulsante')
 
#clic sul pulsante di ricerca
ricerca.clic()
 
# individuazione dell'elemento del prodotto desiderato utilizzando l'attributo xpath
prodotto = conducente.find_element_by_xpath('//*[@id="root"]/div/div[3]/div[1]/div/div[1]
/div[2]/div[1]/div/div/div[2]/div[2]/a')
 
# facendo clic sul prodotto desiderato
Prodotto.clic()
 
# individuazione dell'elemento del prezzo utilizzando l'attributo xpath
prezzo = conducente.find_element_by_xpath('//*[@id="module_product_price_1"]/div/div/span')
 
# estrazione del testo dall'elemento prezzo. Questo dà il prezzo del prodotto come 'Rs. 24.500'
prezzo = prezzo.testo
 
# conversione del prezzo in stringa
Prezzo = str(prezzo)
 
# definendo un array vuoto. Questo verrà utilizzato nell'estrazione di cifre dal prezzo come "24500"
forma 'Rs. 24.500'
numero = []
 
# leggendo tutte le voci della stringa di prezzo una per una usando il ciclo for
per x nel prezzo:
 
# controllando se la voce è cifra o meno poiché vogliamo solo cifre nel prezzo
se x.isdigit():
 
# aggiungendo solo cifre alla lista numerica
numero.append(x)
 
# unendo tutte le voci della lista num. Ora il prezzo è una stringa contenente solo cifre
prezzo = ".unisciti (numero)
 
# conversione della stringa di prezzo in numero intero
prezzo = int(prezzo)
 
# verificare se il prezzo è conveniente o meno
se il prezzo <= 25000:
 
# chiamare la funzione di posta per informarti sul prezzo
posta()
 
# chiusura del browser
autista.smettere()

Il codice sopra si apre daraz.pk e cerca la fotocamera e ti informa tramite e-mail se il prezzo è conveniente. Prima di tutto abbiamo importato SELENIO e SMTPLIB moduli. Poi abbiamo definito la funzione 'mail' che ti manda mail informandoti che il prezzo è abbordabile, quando chiamato.

Dopodiché abbiamo aperto il browser Chrome utilizzando chromedriver e cercato "daraz".pk'. Quindi individuiamo il nostro prodotto desiderato utilizzando gli elementi e i loro attributi. Il modo in cui gli elementi vengono trovati e localizzati è stato descritto sopra. Il prezzo che abbiamo ottenuto era una stringa, quindi abbiamo convertito questa stringa in un numero intero e poi abbiamo verificato se il prezzo è conveniente o meno. Se il prezzo è abbordabile, chiama la funzione 'mail'.

Creazione di un lavoro Cron

Sopra sono necessari due script di automazione per essere eseguiti una volta al giorno a un'ora specifica. Possiamo gestirlo usando cron job. Le attività aggiunte a crontab possono essere eseguite ripetutamente in un momento specifico. Per aggiungere le attività sopra in crontab, prima di tutto esegui il seguente comando in Linux Terminal.

[email protected]:~$ crontab -e

Il comando sopra aprirà il file crontab da modificare. Alla fine del file inserisci il seguente comando.

0 8 * * * python /percorso/a/python/script

Vediamo le voci prima del comando da destra a sinistra.

Quindi questo comando verrà eseguito tutti i giorni alle 8 in punto.

Conclusione

In questo articolo, abbiamo discusso di come è possibile utilizzare SELENIO insieme a Python per automatizzare il tuo browser utilizzando diverse tecniche. Puoi automatizzare il tuo lavoro di routine quotidiano, compilare moduli, scaricare le tue cose e un sacco di cose usandolo. Abbiamo discusso solo due esempi qui, ma puoi automatizzare ogni cosa che un essere umano può fare manualmente con il browser.

I migliori giochi di laboratorio dell'app Oculus
Se possiedi un visore Oculus, devi essere informato sul sideloading. Il sideloading è il processo di installazione di contenuti non archiviati sul vis...
I 10 migliori giochi da giocare su Ubuntu
La piattaforma Windows è stata una delle piattaforme dominanti per i giochi a causa dell'enorme percentuale di giochi che si stanno sviluppando oggi p...
I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...