Il selenio viene utilizzato per automatizzare le attività noiose; automatizza i browser. Dalla navigazione del Web per l'accesso automatico agli account alla creazione di robot per varie attività è possibile ottenere utilizzando il selenio.
Prima di tutto, installiamo le dipendenze:
PIP Installare il selenio
PIP Installa WebDriver-Manager
Navigare sul Web
Importiamo le dipendenze:
dal webdriver di import selenio
da WebDriver_Manager.Chrome Import ChromedriverManager
Quindi inizializziamo il webdriver:
Driver = WebDriver.Chrome (ChromedRiverManager ().installare())
In primo luogo, proviamo a navigare in una pagina Web utilizzando il get () metodo. IL get () metodo aprirà la pagina web o l'URL che è stato inserito; Si prega di notare che il collegamento completo deve essere fornito per farlo funzionare.
autista.get ("https: // DuckDuckgo.com/")
Supponiamo di voler massimizzare la finestra usando il Maximize_window () metodo e non far funzionare Python attraverso il resto del codice; Quindi useresti il implicitly_wait () Metodo per mettere in pausa.
autista.Maximize_window ()
autista.implicitamente_wait (4)
Se desideri informazioni sul sito Web, puoi utilizzare il metodo del titolo per ottenere il nome o il titolo del sito Web, il metodo Current_URL per ottenere l'URL e Page_Source per ottenere il codice HTML della pagina.
Stampa (driver.titolo)
Stampa (driver.current_url)
Stampa (driver.pagina_source)
Per inserire un pezzo di testo nella barra di ricerca, dobbiamo prima provare a identificare la barra di ricerca usando "ispezionare"Pulsante (fare clic con il tasto destro -> Ispeziona).
Per DuckDuckgo.com, c'è un ID disponibile, ma puoi anche ottenere altri attributi. Il prossimo metodo che utilizziamo è il metodo find_element_by_id (). Lo scopo di questo metodo è selezionare l'elemento di preoccupazione.
Search_bar = driver.find_element_by_id ("Search_form_input_homepage")
Tuttavia, puoi sostituirlo con uno qualsiasi degli altri attributi. Ad esempio, se hai il nome disponibile, usa il find_elements_by_name () metodo. Non abbiamo dovuto usare l'ID; Avremmo potuto usare qualcos'altro del tutto se avessimo voluto. Ad esempio, avremmo potuto usare il nome come segue:
Search_bar = driver.find_element_by_name ("q")
Dato che abbiamo individuato la barra di ricerca, ora possiamo inserire un pezzo di testo usando il Send_Keys () metodo.
barra di ricerca.Send_Keys ("SeleniumHQ")
Teoricamente, quello che faremmo è fare clic sul pulsante successivo. Quindi cosa facciamo? Sì, l'hai indovinato! Mettiamo gli elementi e troviamo l'ID o un altro attributo del pulsante successivo. Quindi, utilizziamo il metodo Click () per fare clic sul pulsante che abbiamo selezionato utilizzando un attributo (come ID).
pulsante = driver.find_element_by_id ("Search_button_homepage")
pulsante.clic()
A questo punto, ottieni un elenco di siti Web; È molto simile a digitare Selenio nella barra di ricerca dell'Ackduckgo.com sito e premendo il pulsante successivo. Ora, proviamo a fare clic sulla prima pagina che otteniamo. Qui, userò XPath, ma puoi usare uno qualsiasi degli attributi. Si prega di notare che quando si utilizza XPath, le virgolette all'interno sono singoli e all'esterno sono doppi (“//*[@id = 'r1-0']/div/h2/a [1]”).
Pagina = driver.find_element_by_xpath ("//*[@id = 'r1-0']/div/h2/a [1]")
pagina.clic()
Accedere a un account di posta elettronica
Ora supponiamo che vogliamo accedere a un account di posta elettronica. Come sempre, abbiamo iniziato a importare i moduli necessari e inizializzandoli come abbiamo fatto per navigare in una pagina web. Qui, importeremo anche tempo.
dal webdriver di import selenio
da WebDriver_Manager.Chrome Import ChromedriverManager
tempo di importazione
Driver = WebDriver.Chrome (ChromedRiverManager ().installare())
autista.get ("https: // www.gmail.com/")
autista.Maximize_window ()
autista.implicitamente_wait (4)
utente = driver.find_element_by_xpath ("//*[@id = 'identifierid']")
utente.Send_Keys ("[email protected] ")
Next = Driver.find_element_by_xpath ("//*[@id = 'identifiernext']/div/botton/div [2]")
Prossimo.clic()
Successivamente, useremo il tempo.sonno() Metodo per prevenire gli errori di sincronizzazione (a volte, ci vuole più tempo per caricare una pagina e mentre si carica, il resto dello script viene eseguito e un errore riportato). Nel tentativo di prevenire gli errori di sincronizzazione, gli daremo il tempo di caricare tutto.
tempo.sonno (3)
password = driver.find_element_by_xpath ("//*[@id = 'password']/div [1]/div/div [1]/input")
parola d'ordine.Send_Keys ("Password1.")
Next2 = driver.find_element_by_xpath ("//*[@id = 'passwordNext']/div/botton/div [2]")
Next2.clic()
Invio di e -mail tramite selenio
Per inviare e -mail, abbiamo bisogno di due parti: come accedere a Gmail dalla sezione precedente e come inviare e -mail da questa sezione. L'invio di un'e -mail è facile come navigare sul Web o addirittura accedere a Gmail. Ancora una volta, scegliamo il metodo find_element_by_xpath () o uno simile come fint_element_by_id () o ancora un altro per trovare ciascun componente del messaggio da inviare: il pulsante di composizione, la barra di input di destinazione, la barra di input dell'oggetto, il corpo e il pulsante di invio. Dobbiamo individuarli, popolarli con testo quando necessario e fare clic sui pulsanti. Abbastanza semplice. Quindi proviamolo:
Innanzitutto, troviamo il pulsante di compose usando XPath, quindi fai clic su di esso:
tempo.sonno (1)
compose_button = driver.find_element_by_xpath ("//*[@id = ': 2p']/div/div")
compose_button.clic()
Successivamente, aggiungiamo un indirizzo di destinazione nella barra di input dell'indirizzo di destinazione:
tempo.sonno (2)
to_input_bar = driver.find_element_by_id (': 8c')
to_input_bar.Send_Keys ("[email protected] ")
Ora aggiungiamo un argomento, un corpo e facciamo clic sul pulsante Invia:
soggetto = driver.find_element_by_id (': 7u')
soggetto.Send_Keys ("Test Email")
corpo = driver.find_element_by_xpath ("//*[@id = ': 8z']")
corpo.Send_Keys ("Questo è un messaggio automatizzato inviato usando Selenio.")
Send_Button = driver.find_element_by_xpath ("//*[@id = ': 7k']")
Send_Button.clic()
OK, quindi, fare un semplice programma per accedere e inviare posta ora è troppo facile? Non dobbiamo fermarci qui; Possiamo creare tutti i tipi di robot.
Azioni del mouse
La prossima cosa da imparare è trattare con le azioni del mouse - dal mouse al trascinamento e alla caduta di file.
Dobbiamo prima specificare le schede; In questo caso, specificherò tre schede: la scheda Home, la scheda Electronics e la scheda del telefono cellulare (il telefono cellulare è nidificato all'interno dell'elettronica). Ok, quindi per questo esempio, ho scelto eBay.circa. Su eBay.CA, ci sono molte schede: una per casa e una per l'elettronica. In genere iniziamo nella scheda Home. Qui, diciamo che vorrei navigare nella scheda Elettronica e quindi la scheda cellulare e accessori al suo interno e fare clic su di esso. Potremmo usare le azioni del mouse per compiere quanto segue.
Iniziamo importando il necessario e aprendo eBay.circa.
Dal webdriver di import selenio
da selenio.WebDriver Import ActionChains
da WebDriver_Manager.Chrome Import ChromedriverManager
tempo di importazione
Driver = WebDriver.Chrome (ChromedRiverManager ().installare())
autista.get ("https: // www.eBay.circa/")
Successivamente, dobbiamo aggiungere gli elementi di cui siamo preoccupati. In questo caso, ho le tre scatole rosse nell'immagine precedente.
Home = Driver.find_element_by_xpath ("//*[@id = 'maincontent']/div [1]/ul/li [1]/span")
Electronics = driver.find_element_by_xpath ("//*[@id = 'maincontent']/div [1]/ul/li [5]/a")
cell_phone = driver.find_element_by_xpath ("//*[@id = 'maincontent']/div [1]/ul/li [5]/div [2]/div [1]/nav [1]/ul/li [1]/a ")
Quindi inizializziamo il ActionChains e usa il move_to_element () Metodo per spostarsi da casa all'elettronica e ai telefoni cellulari. Una volta sulla scheda cellulare e accessori, ci clicca. Affinché tutto ciò funzioni, dobbiamo aggiungere il metodo perform () alla fine, o non accadrà nulla.
Azioni = ActionChains (driver)
Next_step = Azioni.move_to_element (home).move_to_element (Electronics)
passo successivo.move_to_element (cell_phone).clic()
passo successivo.eseguire()
Tuttavia, è possibile eseguire varie azioni con il mouse - dal pulsante destro del mouse a trascinare e gocce. Ottiamo un esempio in cui puoi fare clic con il tasto destro. Per fare clic con il pulsante destro del mouse, è necessario il metodo di contestio_click (); Passa al suo interno ciò che desideri fare clic. In questo caso, desideriamo prima fare clic con il pulsante destro del mouse sul pulsante, quindi diciamo driver.context_click (pulsante) - Fare clic con il tasto destro del mouse sul pulsante. Quindi quando il clic destro ci mostra un menu di selezione con opzioni, gli chiediamo di fare clic su una delle opzioni visualizzate: fare clic (copia), che fai clic sulla scheda Copia.
dal webdriver di import selenio
da selenio.WebDriver Import ActionChains
da WebDriver_Manager.Chrome Import ChromedriverManager
Driver = WebDriver.Chrome (ChromedRiverManager ().installare())
autista.get ("https: // swisnl.github.IO/JQuery-ContextMenu/Demo/Menu-Title.html ")
pulsante = driver.find_element_by_xpath ("/html/body/div/section/div/div/div/p/span [1]")
copia = driver.find_element_by_xpath ("/html/body/ul [1]/li [3]")
Azioni = ActionChains (driver)
Azioni.context_click (pulsante).Clicca (copia)
Azioni.eseguire()
Puoi fare così tante cose con il selenio, ma daremo anche un'occhiata a Drag and Drop. Esistono due modi per trascinare e far cadere un elemento nella sua destinazione target. Uno sta usando il metodo Drag_and_Drop () e l'altro sta usando una tecnica più complicata:
dal webdriver di import selenio
da selenio.WebDriver Import ActionChains
da WebDriver_Manager.Chrome Import ChromedriverManager
tempo di importazione
Driver = WebDriver.Chrome (ChromedRiverManager ().installare())
autista.get ("http: // www.dhtmlgoodies.com/script/drag-drop-nodes/drag-drop-nodes-demo3.html ")
autista.implicitamente_wait (1)
autista.Maximize_window ()
# Seleziona l'immagine di origine a pagina da trascinare
sorgente = driver.find_element_by_id ("node2")
# Seleziona il target dove vuoi cadere
Target = driver.find_element_by_xpath ("//*[@id = 'box1']")
tempo.sonno (5)
# Inizializza le ActionChains
Action_Chains = ActionChains (driver)
# Sposta la fonte sul target
action = action_chains.Click_and_hold (fonte) \
.move_to_element (target) \
.Rilascio (target) \
.clicca (target) \
.eseguire()
Il selenio è uno strumento molto potente per fare molte cose. In questo tutorial, abbiamo coperto alcune delle cose che il selenio può fare; Tuttavia, una volta familiarizzato con esso, puoi creare tutti i tipi di robot per automatizzare il browser.
Codice felice!