Salta al contenuto

Come acquisire screenshot con Selenium

Selenium è un popolare strumento di automazione del browser utilizzato per web scraping, test e altro ancora. Una caratteristica utile che fornisce è la possibilità di acquisire screenshot delle pagine Web durante l'automazione. Ecco uno sguardo approfondito su come acquisire screenshot di pagine intere e a livello di elemento con Selenium in Python.

Introduzione all'acquisizione di schermate con Selenium

I motivi principali per cui potresti voler acquisire screenshot con Selenium includono:

  • Salvataggio di copie delle pagine Web che hai raschiato o con cui hai interagito per il debug o i record
  • Acquisizione di contenuti dinamici come informazioni su data/ora o annunci per analisi successive
  • Controllo dei problemi di layout su browser e dispositivi
  • Documentare le fasi e gli stati del flusso di lavoro nei test automatizzati
  • Catturare screenshot di immagini captcha per risolverli con l'automazione

Selenium supporta l'acquisizione di screenshot sia di pagine Web complete che di elementi specifici su una pagina. Ciò offre molta flessibilità per catturare esattamente ciò di cui hai bisogno.

Configurazione di Selenium e apertura di un browser

Per iniziare, dobbiamo prima importare Selenium e creare un'istanza di un oggetto WebDriver per controllare il browser. L'esempio seguente mostra l'apertura di Chrome:

from selenium import webdriver

driver = webdriver.Chrome()

Altri browser come Firefox e Edge funzionano in modo simile. Con l'oggetto driver pronto, ora possiamo accedere a una pagina Web per acquisire lo screenshot:

driver.get("https://example.com")

Acquisizione di schermate a pagina intera

Il modo più semplice per acquisire uno screenshot dell'intero contenuto della finestra del browser è utilizzare save_screenshot().

Passagli un percorso file per salvare l'immagine direttamente su disco:

driver.save_screenshot(‘example_screenshot.png‘)

In alternativa, puoi ottenere lo screenshot come byte PNG in memoria o come stringa codificata Base64:

screenshot_png = driver.get_screenshot_as_png()
screenshot_b64 = driver.get_screenshot_as_base64() 

Ciò consente, ad esempio, di salvare lo screenshot in un database o di inviarlo tramite HTTP.

Acquisizione di screenshot degli elementi

Per acquisire screenshot di un elemento specifico sulla pagina anziché sullo schermo intero, devi prima trovare l'elemento utilizzando un localizzatore come il selettore CSS o XPath:

element = driver.find_element(By.ID, ‘main-content‘)

Allora chiama .screenshot() sul WebElement per acquisire solo quella parte della pagina:

element_shot = element.screenshot(‘element.png‘)

Proprio come con gli screenshot completi, puoi ottenere anche i byte o la stringa Base64.

Suggerimenti per screenshot affidabili

Ecco alcuni suggerimenti per acquisire screenshot accurati e utili con Selenium:

  • Attendi il caricamento completo delle pagine prima di acquisire screenshot per evitare di acquisire stati di caricamento intermedio.
  • Scorri gli elementi in vista prima di acquisire screenshot, se necessario.
  • Fai attenzione agli annunci pubblicitari e ai contenuti dinamici che cambiano tra uno scatto e l'altro.
  • Acquisisci screenshot mobile ridimensionando la finestra del browser o utilizzando l'emulazione mobile.
  • I browser headless come PhantomJS possono effettuare screenshot ma potrebbero perdere alcuni contenuti.

Casi d'uso per schermate di selenio

Alcuni esempi di come potresti utilizzare gli screenshot di Selenium nei tuoi progetti di web scraping e automazione:

  • Debug e registrazione: confronta gli screenshot prima e dopo per vedere le modifiche.
  • Acquisizione di contenuti generati o urgenti come dashboard.
  • Test di regressione visiva automatizzati tra le versioni del browser.
  • Documentare il flusso di lavoro e lo stato durante le esecuzioni dei test.
  • Captcha di screenshot da inserire in un servizio di risoluzione.
  • Archiviazione dei dati delle pagine raschiate insieme agli screenshot.

Riepilogo e passaggi successivi

I passaggi per acquisire screenshot con Selenium in Python sono:

  1. Importa Selenium e crea un WebDriver
  2. Passare alla pagina Web di destinazione
  3. Call save_screenshot() per acquisire la pagina intera
  4. Oppure trova un elemento e chiama screenshot() per catturare solo quell'elemento
  5. Modifica secondo necessità per pagine dinamiche e dispositivi mobili

Spero che questa guida ti fornisca una buona base per acquisire screenshot nel tuo progetto Selenium! Le possibilità sono infinite.

Partecipa alla conversazione

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *