1. Terminare la sessione
Come chiudere correttamente una sessione del browser
Hai uno script fantastico che raccoglie dati, clicca pulsanti e fa un sacco di cose magiche nel browser. Ora è importante terminare correttamente il suo lavoro. Immagina che il tuo browser sia come un pachiderma lento: non puoi semplicemente sbattere la porta e andare via. Devi chiudere tutto educatamente e con calma. Usa il metodo quit()
.
from selenium import webdriver
# Inizializzazione del driver del browser
driver = webdriver.Chrome()
# qui accade la tua magia del browser... 🧙♂️
# Chiusura del browser
driver.quit()
Il metodo quit()
chiude tutte le finestre del browser e termina il suo lavoro. Se dimentichi di chiamarlo, inizieranno storie strane con un browser aperto in background e un uso inspiegabile della memoria. Una vita felice, conveniamolo, la vogliono tutti.
Risoluzione dei problemi con i processi del browser bloccati
A volte, dopo aver lavorato con Selenium, i processi del browser continuano a rimanere in background, come unità indecise in un gioco di strategia in tempo reale. Questo può accadere, per esempio, se il tuo script "si schianta" da qualche parte a metà. Un modo per affrontare questo problema è utilizzare la terminazione dei processi in blocco, ad esempio con psutil
in Python o altri comandi di sistema.
import psutil
# Chiusura di tutti i processi Chrome bloccati
for proc in psutil.process_iter():
# Controlliamo se il processo appartiene al browser
if 'chrome' in proc.name().lower():
proc.kill()
Non è il modo più elegante, ma a volte non ci sono altre opzioni se i processi diventano ingestibili. Ricorda che così facendo chiuderai tutti i processi del browser, quindi usalo con buon senso.
2. Testing dello script
Verifica della correttezza di ogni passo nello script
Terminare correttamente lo script è solo metà del lavoro. È importante verificare che ogni passo venga eseguito correttamente. Per questo scopo sono perfetti
gli strumenti di testing del software, come unittest
o pytest
.
Puoi scrivere test per assicurarti che il tuo script apra correttamente le pagine, clicchi i pulsanti e raccolga i dati.
Vediamo un test minimalista con unittest
:
import unittest
from selenium import webdriver
class TestBrowserAutomation(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
def test_open_page(self):
self.driver.get("https://example.com")
self.assertEqual("Example Domain", self.driver.title)
def tearDown(self):
self.driver.quit()
unittest.main()
Questo test verifica che il nostro script apra la pagina https://example.com e che il titolo della pagina corrisponda alle aspettative. È un metodo semplice ma potente per assicurarsi che le parti chiave del tuo script funzionino correttamente.
Debugging e ottimizzazione
A volte, anche dopo aver scritto i test, il tuo script si comporta come un bambino capriccioso, rifiutandosi di funzionare correttamente. Qui entra in gioco il debugging. Usa
print()
per stampare valori intermedi e capire dove esattamente qualcosa è andato storto. Anche i commenti divertenti nel codice sono benvenuti, ma non dimenticare lo scopo: capire cosa sta succedendo.
Ad esempio, hai incontrato un problema con l'assenza di some_element sulla pagina:
try:
some_element = driver.find_element_by_id('missing-id')
except Exception as e:
print(f"Ops! Qualcosa è andato storto: {e}")
Inoltre, presta molta attenzione alle performance del tuo script. Talvolta, per ottimizzare il lavoro, puoi usare strategie diverse, come ridurre la frequenza delle richieste o ottimizzare la logica di ricerca degli elementi.
Prevenire crash ed errori futuri
Dopo l'ottimizzazione e il debugging, il tuo script dovrebbe funzionare alla perfezione, come un orologio svizzero, ma c'è sempre il rischio di nuovi problemi. Puoi utilizzare sistemi di logging, come logging
, per registrare cosa sta succedendo nel tuo script. Questo ti permetterà di vedere dove e perché qualcosa è andato storto.
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info("Inizio dello script")
# registra altre azioni qui...
logger.info("Fine dello script")
Ricorda che dovresti sempre prevedere eventi inaspettati, specialmente se stai lavorando con dati o pagine instabili. Considera di implementare sistemi di retry e timeout per evitare che lo script si blocchi al minimo errore.
GO TO FULL VERSION