Selenium

Come fare uno screenshot con il selenio

Come fare uno screenshot con il selenio
Il selenio è un ottimo strumento per il test del browser, l'automazione del web e il web scraping. Puoi anche usare Selenium per fare screenshot della tua pagina web. Questo è molto importante per testare l'interfaccia utente (UI) del tuo sito web su diversi browser web.

Browser Web diversi utilizzano motori di rendering diversi per eseguire il rendering delle pagine Web. Quindi, lo stesso codice frontend potrebbe non essere visualizzato allo stesso modo in tutti i browser web. Per risolvere questo problema, potrebbe essere necessario aggiungere alcuni codici frontend specifici del browser sul tuo sito web. Tuttavia, questa non è l'unica parte difficile quando si progetta un sito Web compatibile con browser e dispositivi diversi. Il controllo manuale dell'aspetto del sito Web in ciascuno dei browser di destinazione può richiedere molto tempo. Dovresti aprire tutti i tuoi browser Web mirati, visitare la pagina Web, attendere il caricamento della pagina e confrontare tra loro le pagine visualizzate. Per risparmiare tempo, puoi utilizzare la funzione di screenshot di Selenium per acquisire automaticamente schermate del tuo sito Web in ciascuno dei tuoi browser di destinazione e confrontare tu stesso le immagini. È molto più veloce del metodo manuale. Questo articolo ti mostrerà come acquisire schermate delle finestre del browser utilizzando Selenium.

Prerequisiti

Per provare i comandi e gli esempi discussi in 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) Il pacchetto Python virtualenv installato sul tuo computer.
5) Browser web Mozilla Firefox e Google Chrome installati sul tuo computer.
6) Conoscenza di come installare Firefox Gecko Driver e Chrome Web Driver sul proprio sistema.

Per soddisfare i requisiti 4, 5 e 6, puoi leggere il mio articolo Introduzione al selenio con Python 3 su Linuxhint.come.

Puoi trovare molti altri articoli sugli argomenti richiesti su LinuxHint.come. Assicurati di controllare questi articoli se hai bisogno di ulteriore assistenza.

Configurazione di una directory di progetto

Per mantenere tutto organizzato, crea la nuova directory del progetto selenio-screenshot/, come segue:

$ mkdir -pv selenium-screenshot/images,drivers

Vai a selenio-screenshot/ directory del progetto, come segue:

$ cd selenio-screenshot/

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

$ virtualenv .venv

Attivare l'ambiente virtuale, come segue:

$ fonte .venv/bin/activate

Installa Selenium usando PIP3, come segue:

$ pip3 installa selenio

Scarica e installa il driver web richiesto nel autisti/ directory del progetto. Ho spiegato il processo di download e installazione dei driver Web nell'articolo Introduzione al selenio con Python 3. Se hai bisogno di assistenza su questo argomento, cerca LinuxSuggerimento.come per questo articolo.

Nozioni di base sull'acquisizione di schermate con selenio

Questa sezione ti fornirà un esempio molto semplice di come acquisire schermate del browser con Selenium.

Per prima cosa, crea un nuovo script Python ex01_google-chrome.pi e digita le seguenti righe di codici nello script.

dal webdriver di importazione del selenio
dal selenio.webdriver.Comune.chiavi di importazione chiavi
googleChromeOptions = driver web.cromo.opzioni.Opzioni()
googleChromeOptions.senza testa = Vero
googleChromeOptions.add_argument('--window-size=1280.720')
googleChrome = driver web.Chrome(executable_path="./driver/chromedriver",
options=googleChromeOptions)
pageUrl = "https://www.w3schools.com";
Google Chrome.get(URLPagina)
Google Chrome.save_screenshot('images/w3schools_google-chrome.png')
Google Chrome.vicino()

Una volta che hai finito, salva il ex01_google-chrome.pi Script Python.

La riga 4 crea un Opzioni oggetto per il browser web Google Chrome.

La linea 5 abilita la modalità headless per Google Chrome.

La riga 6 imposta la dimensione della finestra su 1280×720 pixel.

La riga 8 crea un oggetto browser utilizzando il driver Chrome e lo memorizza nel in Google Chrome variabile.

La riga 10 definisce a URL della pagina variabile. Il URL della pagina la variabile contiene l'URL della pagina web che Selenium farà lo screenshot.

La riga 11 carica il URL della pagina nel browser.

La riga 12 usa il salva_schermata() metodo per salvare uno screenshot della finestra del browser nel file w3schools_google-chrome.png nel immagini/ directory del progetto.

Infine, la riga 14 chiude il browser.

Quindi, esegui ex01_google-chrome.pi Script Python, come segue:

$ python3 ex01_google-chrome.pi

In caso di corretta esecuzione dello script, lo screenshot verrà salvato nel file immagine w3schools_google-chrome.png nel immagini/ directory del progetto, come puoi vedere nello screenshot qui sotto.

Per acquisire uno screenshot dello stesso sito Web ma nel browser Web Firefox, creare il nuovo script Python ex01_firefox.pi e digita le seguenti righe di codici nello script.

dal webdriver di importazione del selenio
dal selenio.webdriver.Comune.chiavi di importazione chiavi
firefoxOptions = webdriver.firefox.opzioni.Opzioni()
FirefoxOpzioni.senza testa = Vero
FirefoxOpzioni.add_argument('--width=1280')
FirefoxOpzioni.add_argument('--height=720')
firefox = driver web.Firefox(percorso_eseguibile="./drivers/geckodriver", options=opzioni firefox)
pageUrl = "https://www.w3schools.com";
firefox.get(URLPagina)
firefox.save_screenshot('images/w3schools_firefox.png')
firefox.vicino()

Una volta che hai finito, salva il ex01_firefox.pi Script Python.

La riga 4 crea un Opzioni oggetto per il browser web Firefox.

Line 5 abilita la modalità headless per Firefox.

La riga 6 imposta la larghezza della finestra del browser su 1280 pixel e la riga 7 imposta l'altezza della finestra del browser su 720 pixel.

La riga 9 crea un oggetto browser utilizzando il driver Firefox Gecko e lo memorizza nel firefox variabile.

La riga 11 definisce a URL della pagina variabile. Il URL della pagina la variabile contiene l'URL della pagina web che Selenium farà lo screenshot.

La riga 13 carica il URL della pagina sul browser.

La riga 14 usa il salva_schermata() metodo per salvare uno screenshot della finestra del browser nel file w3schools_firefox.png nel immagini/ directory del progetto.

Infine, la riga 15 chiude il browser.

Quindi, esegui ex01_firefox.pi Script Python, come segue:

$ python3 ex01_firefox.pi

In caso di corretta esecuzione dello script, lo screenshot dovrebbe essere salvato nel file immagine w3schools_firefox.png nel immagini/ directory del progetto, come puoi vedere nello screenshot qui sotto.

Acquisizione di schermate di diverse risoluzioni dello schermo

Questa sezione ti mostrerà come acquisire schermate della stessa pagina web con diverse risoluzioni dello schermo. In questa sezione utilizzerò il browser web Google Chrome, ma puoi utilizzare Firefox o qualsiasi altro browser per questa sezione.

Per prima cosa, crea il nuovo script Python ex02.pi e digita le seguenti righe di codice nello script.

dal webdriver di importazione del selenio
dal selenio.webdriver.Comune.chiavi di importazione chiavi
pageUrl = "https://www.w3schools.com/";
risoluzioni = [ '320,1080', '500,1080', '720,1080', '1366,1080', '1920,1080']
per la risoluzione nelle risoluzioni:
print("Scattare screenshot per la risoluzione %s… " % (risoluzione.sostituisci(',', 'x')))
chromeOptions = driver web.Opzioni Chrome()
chromeOpzioni.senza testa = Vero
chromeOpzioni.add_argument('--window-size=' + risoluzione)
chrome = driver web.Chrome(executable_path="./drivers/chromedriver", options=chromeOptions)
cromo.get(URLPagina)
outputImage = 'immagini/homepage_chrome_' + risoluzione.sostituisci(',','_') + '.png'
cromo.save_screenshot(outputImage)
cromo.vicino()
print('Salvato in %s.'% (outputImmagine))

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

La riga 4 definisce a URL della pagina variabile che contiene l'URL della pagina Web di cui vorrei acquisire schermate in diverse risoluzioni dello schermo.

La riga 5 definisce a risoluzioni elenco che contiene un elenco delle risoluzioni di cui vorrei fare screenshot.

La riga 7 scorre ciascuno dei risoluziones nel risoluzioni elenco.

All'interno del loop, Line 8 stampa un messaggio significativo sulla console.

Le righe 10-15 creano un oggetto browser con il risoluzione dell'iterazione del ciclo corrente e lo memorizza nel cromo variabile.

La linea 17 carica il URL della pagina nel browser.

La riga 19 genera un percorso immagine, in cui verrà salvato lo screenshot, e memorizza l'immagine nel in outputImage variabile.

La riga 20 acquisisce uno screenshot della finestra del browser e lo memorizza nel percorso outputImage.

La riga 21 chiude il browser.

La riga 22 stampa un messaggio significativo sulla console e termina il ciclo.

Quindi, il ciclo ricomincia con la risoluzione dello schermo successiva (i.e., la voce successiva dell'elenco).

Quindi, esegui ex02.pi Script Python, come segue:

$ python3 ex02.pi

Lo script Python ex02.pi dovrebbe acquisire schermate dell'URL specificato in ciascuna delle risoluzioni dello schermo scelte.

Screenshot di w3schools.come in 320 pixel di larghezza.

Screenshot di w3schools.come in 500 pixel di larghezza.

Screenshot di w3schools.come in 720 pixel di larghezza.

Screenshot di w3schools.come in 1366 pixel di larghezza.

Screenshot di w3schools.come in 1920 pixel di larghezza.

Se confronti gli screenshot, dovresti vedere che l'interfaccia utente cambia con la larghezza della finestra del browser. Utilizzando la funzione screenshot Selenium, puoi vedere come appare il tuo sito web su diverse risoluzioni dello schermo in modo rapido e semplice.

Conclusione

Questo articolo ti ha mostrato alcune delle nozioni di base per acquisire schermate utilizzando Selenium e i driver Web di Chrome e Firefox. L'articolo ti ha anche mostrato come acquisire schermate con diverse risoluzioni dello schermo. Questo dovrebbe aiutarti a iniziare con la funzione screenshot del selenio.

Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...
Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...
Giochi rimasterizzati in HD per Linux che non hanno mai avuto una versione Linux prima
Molti sviluppatori ed editori di giochi stanno realizzando remaster HD di vecchi giochi per prolungare la vita del franchise, per favore i fan richied...