CodeGym /Corso Java /Python SELF IT /Ricerca di elementi tramite attributi HTML: id, class

Ricerca di elementi tramite attributi HTML: id, class

Python SELF IT
Livello 35 , Lezione 3
Disponibile

1. Basi della ricerca degli elementi

Metodi per la ricerca degli elementi

Prima di tuffarti nel codice, è importante capire come possiamo cercare elementi su una pagina Web usando Selenium. Selenium offre diversi metodi comodi per cercare gli elementi:

  • find_element_by_id(): Cerca un elemento tramite il suo identificatore unico (id).
  • find_element_by_name(): Permette di trovare un elemento tramite il suo attributo name.
  • find_element_by_class_name(): Cerca elementi che hanno una classe specifica (class).
  • find_element_by_tag_name(): Usa il nome del tag per trovare elementi, per esempio, div, p, a.

Iniziamo con un esempio semplice: cercare un elemento tramite id. Immagina che abbiamo perso il pulsante con la scritta "Pulsante magico" e dobbiamo trovarlo:

Python

from selenium import webdriver

# Configurazione del driver e apertura del browser
driver = webdriver.Chrome()
driver.get('https://example.com')

# Ricerca di un elemento tramite il suo id
magic_button = driver.find_element_by_id('magic_button_id')

# Lavorare con l'elemento trovato (per esempio, estrarre il testo)
print(magic_button.text)

# Concludere la sessione
driver.quit()

Lavorare con gli elementi trovati

Dopo aver trovato un elemento, è il momento di decidere cosa farne. Dai spazio alla fantasia e usa i metodi di Selenium come text per ottenere il contenuto testuale dell'elemento o get_attribute('attribute_name'), per estrarre il valore di qualsiasi attributo dell'elemento.

Supponiamo che il nostro elemento sia un link, e vogliamo sapere dove porta. Ecco come possiamo farlo:

Python

# Ricerca di un elemento con un link
link_element = driver.find_element_by_class_name('link_class')

# Estrazione dell'URL dall'attributo href
link_url = link_element.get_attribute('href')
print(f'Questo link porta a: {link_url}')

2. Metodo find_element_by_id()

Il metodo find_element_by_id() è uno dei modi più veloci ed affidabili per cercare un elemento su una pagina Web. Permette di trovare elementi tramite il loro attributo unico id. In HTML, l'attributo id è un identificatore unico, quindi possiamo essere sicuri che il metodo restituirà un unico elemento specifico.

Esempio di utilizzo:

Python

element = driver.find_element_by_id("submit-button")

In questo esempio, Selenium cerca un elemento con id="submit-button" e lo salva nella variabile element. Questo approccio è comodo per cercare pulsanti, moduli, campi di input e altri elementi unici, che raramente si ripetono nella pagina.

Quando usarlo?

L'utilizzo di find_element_by_id() è consigliato sempre, quando un elemento ha un identificatore unico id, perché questo metodo garantisce un accesso veloce e preciso all'elemento.

2. Metodo find_element_by_name()

Il metodo find_element_by_name() cerca elementi tramite l'attributo name. Viene spesso utilizzato per moduli e campi di input, soprattutto quando gli elementi possono avere la stessa classe o id, ma un name diverso. A differenza di id, l'attributo name non è necessariamente unico, e a volte nella pagina possono esserci diversi elementi con lo stesso name.

Esempio di utilizzo:

Python

element = driver.find_element_by_name("username")

Questo codice cerca un elemento con name="username". Di solito, questo è il campo per l'inserimento del nome utente nei moduli di login.

Quando usarlo?

Questo metodo è utile se un elemento nella pagina non ha un id unico, ma ha un attributo name. È particolarmente efficace per i moduli di input, dove gli elementi hanno spesso l'identificazione tramite name.

3. Metodo find_element_by_class_name()

Il metodo find_element_by_class_name() cerca un elemento tramite la sua classe (class). È utile per lavorare con il CSS e permette di trovare elementi con lo stesso stile. Bisogna considerare che class può essere assegnato a più elementi, quindi, se occorre trovare un solo elemento, è importante precisare una classe unica o utilizzare un altro metodo.

Esempio di utilizzo:

Python

element = driver.find_element_by_class_name("main-header")

In questo esempio, Selenium cerca il primo elemento con la classe main-header.

Quando usarlo?

find_element_by_class_name() viene spesso utilizzato per cercare intestazioni, pulsanti e altri elementi stilizzati. Questo metodo è particolarmente utile se gli elementi non hanno un id o name unico, e anche nei casi in cui è necessario cercare elementi in base alle caratteristiche stilistiche.

4. Metodo find_element_by_tag_name()

Il metodo find_element_by_tag_name() cerca elementi tramite il nome del tag, per esempio, div, p, a, input. È utile per ottenere tutti gli elementi di un tipo specifico, soprattutto se la struttura della pagina permette di orientarsi facilmente tramite i tag.

Esempio di utilizzo:

Python

element = driver.find_element_by_tag_name("h1")

Qui Selenium cerca il primo elemento con il tag h1, che di solito viene utilizzato per le intestazioni nella pagina.

Quando usarlo?

Il metodo find_element_by_tag_name() è adatto per cercare intestazioni, immagini, paragrafi e altri elementi che nella pagina sono rappresentati da un tipo specifico di tag. Tuttavia, dato che nella pagina possono esserci molti tag dello stesso tipo, questo metodo non sempre individua esattamente un elemento specifico.

5. Caratteristiche e errori

Prima di proseguire, facciamo una pausa e rendiamo omaggio alla varietà dell'HTML. A volte elementi come pulsanti o immagini potrebbero non avere id o classi uniche. In questi casi vengono in aiuto metodi di ricerca più avanzati come XPath e i selettori CSS, di cui parleremo nella prossima lezione. Ma se ti ritrovi già ora con elementi di questo tipo, niente panico. È solo una parte del divertimento nel mondo dell'automazione Web.

Fragilità dei selettori

Quando lavori con attributi come id e class, tieni presente che possono cambiare. La scelta di un elemento tramite il suo id, che improvvisamente è cambiato, può portare a un errore. Questo è particolarmente vero per le pagine generate dinamicamente, dove gli identificatori possono essere casuali. Soluzione? Utilizza attributi più stabili o approcci combinati.

6. Applicazione pratica

Ora sappiamo come cercare elementi tramite id, classi e nomi. L'utilità di questa conoscenza è enorme, soprattutto quando si tratta di automatizzare l'interazione con le pagine Web. Gli elementi trovati con successo possono essere utilizzati per compilare moduli, premere pulsanti o estrarre informazioni: azioni che possono accelerare notevolmente il tuo lavoro e liberarti da compiti monotoni.

Immagina una compagnia dove ogni dipendente spreca 10 minuti al giorno compilando lo stesso modulo su un sito. Ed è qui che entra in scena Selenium: in pochi minuti gestirà tutta la routine, mentre tu ti godi il tuo caffè mattutino.

Per chi è già interessato a casi reali, l'automazione con Selenium viene utilizzata per testare applicazioni Web, monitorare cambiamenti sui siti e persino per recuperare la password dimenticata del tuo social preferito, se gli algoritmi decidono che non sei tu in quelle foto con il panda.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION