Come trovare l'elemento per testo con selenio

Come trovare l'elemento per testo con selenio
Individuare e selezionare elementi dalla pagina Web è la chiave per il raschiatura del web con selenio. È possibile selezionare elementi utilizzando un nome tag, ID, nome della classe, selettore XPath, selettore CSS, ecc. in selenio. Puoi anche selezionare elementi che hanno un testo specifico con selenio. Questo è utile per selezionare collegamenti e pulsanti dalla pagina Web facilmente. Anche se la struttura della pagina cambia, purché il testo dell'elemento della pagina web rimane lo stesso, il selettore dovrebbe funzionare bene. Questo è il vantaggio di selezionare collegamenti e pulsanti usando il testo in selenio.

In questo articolo, ti mostrerò come individuare e selezionare elementi dalle pagine Web usando il testo in selenio con la libreria di selenio Python. 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. Pitone Virtualenv pacchetto installato sul tuo computer.
  5. Browser Web Mozilla Firefox o Google Chrome installati sul tuo computer.
  6. Deve sapere come installare il driver GECKO Firefox o il driver Web Chrome.

Per soddisfare i requisiti 4, 5 e 6, leggi il mio articolo Introduzione al selenio in Python 3.

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

Impostazione di una directory del progetto:

Per mantenere tutto organizzato, crea una nuova directory di progetto selenium-text-select/ come segue:

$ mkdir -pv selenium-text-select/driver

Navigare verso il selenium-text-select/ Directory del progetto come segue:

$ cd selenio-text-select/

Crea un ambiente virtuale Python nella directory del progetto come segue:

$ virtualenv .Venv

Attiva l'ambiente virtuale come segue:

$ fonte .venv/bin/attiva

Installa la libreria di Selenio Python utilizzando PIP3 come segue:

$ PIP3 Installa selenio

Scarica e installa tutto il driver Web richiesto in autisti/ directory del progetto. Ho spiegato il processo di download e installazione di Web driver nel mio articolo Introduzione al selenio in Python 3.

Trovare elementi per testo:

In questa sezione, ti mostrerò alcuni esempi di ricerca e selezione degli elementi della pagina web tramite testo con la libreria di selenio Python.

Inizierò con l'esempio più semplice della selezione degli elementi della pagina Web per testo, selezionando i collegamenti dalla pagina web.

Nella pagina di accesso di Facebook.com, abbiamo un link Account dimenticato? Come puoi vedere nello screenshot qui sotto. Selezioniamo questo link con selenio.

Crea un nuovo script Python ex01.Py e digitare le seguenti righe di codici in esso.

dal webdriver di import selenio
da selenio.Webdriver.comune.tasti di importazione delle chiavi
da selenio.Webdriver.comune.per importazione da
Dal tempo Import Sleep
browser = webdriver.Chrome (Executable_Path = "./driver/cromedriver ")
browser.get ("https: // www.Facebook.com/")
FortimAccountLink = browser.find_element (di.XPath, "Post-66569 -_hlk47727696">
//*[text () = 'Account dimenticato?'] ")
FortimAccountLink.Send_keys (chiavi.ACCEDERE)

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

La riga 1-4 importa tutti i componenti richiesti nel programma Python.

La riga 6 crea un cromo browser oggetto usando il Chromedriver binario dal autisti/ directory del progetto.

La riga 8 dice al browser di caricare il sito Web Facebook.com.

La riga 10 trova il collegamento che ha il testo Account dimenticato? Utilizzando il selettore XPath. Per questo, ho usato il selettore XPath //*[text () = 'Account dimenticato?'].

Il selettore XPath inizia con //, il che significa che l'elemento può essere ovunque sulla pagina. IL * Il simbolo dice a Selenio di selezionare qualsiasi tag (UN O P O arco, eccetera.) che corrisponde alla condizione all'interno delle staffe quadrate [. Qui, la condizione è, il testo dell'elemento è uguale a Account dimenticato?

IL testo() La funzione XPath viene utilizzata per ottenere il testo di un elemento.

Per esempio, testo() ritorna Ciao mondo Se seleziona il seguente elemento HTML.

Ciao mondo

La riga 11 invia il file tasto Premere su Account dimenticato? Collegamento.

Esegui lo script Python ex01.Py con il seguente comando:

$ Python Ex01.Py

Come puoi vedere, il browser Web trova, seleziona e preme il chiave sul Account dimenticato? Collegamento.

IL Account dimenticato? Il collegamento porta il browser nella pagina seguente.

Allo stesso modo, puoi facilmente cercare elementi che hanno il valore dell'attributo desiderato.

Qui, il Login Il pulsante è un ingresso elemento che ha il valore attributo Login. Vediamo come selezionare questo elemento per testo.

Crea un nuovo script Python ex02.Py e digitare le seguenti righe di codici in esso.

dal webdriver di import selenio
da selenio.Webdriver.comune.tasti di importazione delle chiavi
da selenio.Webdriver.comune.per importazione da
Dal tempo Import Sleep
browser = webdriver.Chrome (Executable_Path = "./driver/cromedriver ")
browser.get ("https: // www.Facebook.com/")
sonno (5)
emailInput = browser.find_element (di.XPath, "// input [@id = 'email']")
passwordInput = browser.find_element (di.XPath, "// input [@id = 'pass']")
LogInButton = browser.find_element (di.XPath, "//*[@value = 'log in']")
EmailInput.send_keys ('[email protected] ')
sonno (5)
passwordInput.send_keys ('segreto-pass')
sonno (5)
LoginButton.Send_keys (chiavi.ACCEDERE)

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

La riga 1-4 importa tutti i componenti richiesti.

La riga 6 crea un cromo browser oggetto usando il Chromedriver binario dal autisti/ directory del progetto.

La riga 8 dice al browser di caricare il sito Web Facebook.com.

Tutto accade così in fretta una volta eseguita lo script. Quindi, ho usato il sonno() funzione molte volte in ex02.Py Per ritardare i comandi del browser. In questo modo, puoi osservare come funziona tutto.

La riga 11 trova la casella di testo di input e -mail e memorizza un riferimento dell'elemento in EmailInput variabile.

La riga 12 trova la casella di testo di input e -mail e memorizza un riferimento dell'elemento in EmailInput variabile.

La riga 13 trova l'elemento di input che ha l'attributo valore Di Login Utilizzando il selettore XPath. Per questo, ho usato il selettore XPath //*[@valore = 'accedi'].

Il selettore XPath inizia con //. Significa che l'elemento può essere ovunque sulla pagina. IL * Il simbolo dice a Selenio di selezionare qualsiasi tag (ingresso O P O arco, eccetera.) che corrisponde alla condizione all'interno delle staffe quadrate [. Qui, la condizione è, l'attributo dell'elemento valore è uguale a Login.

La riga 15 invia il manichino [email protected] nella casella di testo di input e -mail e la riga 16 ritarda l'operazione successiva.

La riga 18 invia il passaggio segreto input alla casella di testo di input password e la riga 19 ritarda l'operazione successiva.

La riga 21 invia il tasto Premere sul pulsante di accesso.

Corri il ex02.Py Script Python con il seguente comando:

$ Python3 Ex02.Py

Come puoi vedere, le caselle di testo e -mail e password sono riempite con i nostri valori fittizi e il Login il pulsante viene premuto.

Quindi la pagina naviga nella pagina seguente.

Trovare elementi con testo parziale:

Nella sezione precedente, ti ho mostrato come trovare elementi con un testo specifico. In questa sezione, ti mostrerò come trovare elementi dalle pagine Web usando un testo parziale.

Nell'esempio, ex01.Py, Ho cercato l'elemento link che ha il testo Account dimenticato?. È possibile cercare lo stesso elemento di collegamento usando il testo parziale come Dimenticato acc. Per fare ciò, puoi usare il contiene () Funzione xpath, come mostrato nella riga 10 di ex03.Py. Il resto dei codici è uguale a ex01.Py. I risultati saranno gli stessi.

Nella riga 10 di ex03.Py, La condizione di selezione ha utilizzato il file contiene (fonte, testo) Funzione xpath. Questa funzione prende 2 argomenti, fonte, E testo.

IL contiene () La funzione controlla se il testo dato nel secondo argomento corrisponde parzialmente al fonte valore nel primo argomento.

La fonte può essere il testo dell'elemento (testo()) o il valore dell'attributo dell'elemento (@attr_name).

In ex03.Py, Il testo dell'elemento viene controllato.

Un'altra utile funzione XPath per trovare elementi dalla pagina Web usando il testo parziale è avvia con (fonte, testo). Questa funzione ha gli stessi argomenti del contiene () funzione e viene utilizzato allo stesso modo. L'unica differenza è che il inizia con() La funzione controlla se il secondo argomento testo è la stringa iniziale del primo argomento fonte.

Ho riscritto l'esempio ex03.Py per cercare l'elemento per il quale inizia il testo Dimenticato, Come puoi vedere nella riga 10 di Ex04.Py. Il risultato è lo stesso di in ex02 E ex03.Py.

Ho anche riscritto ex02.Py in modo che cerchi l'elemento di input per il quale il valore L'attributo inizia con Tronco d'albero, Come puoi vedere nella riga 13 di ex05.Py. Il risultato è lo stesso di in ex02.Py.

Conclusione:

In questo articolo, ti ho mostrato come trovare e selezionare elementi dalle pagine web tramite testo con la biblioteca di selenio Python. Ora, dovresti essere in grado di trovare elementi dalle pagine Web tramite testo specifico o testo parziale con la biblioteca di selenio Python.