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