Come caricare & Scarica un file utilizzando Selenium Webdriver

Sommario:

Anonim

In questo tutorial impareremo come gestire i caricamenti e i download di file.

Caricamento di file

Per questa sezione, useremo http://demo.guru99.com/test/upload/ come nostra applicazione di prova. Questo sito consente facilmente a qualsiasi visitatore di caricare file senza richiedere la registrazione.

Il caricamento dei file in WebDriver viene eseguito semplicemente utilizzando il metodo sendKeys () nel campo di immissione di selezione del file per inserire il percorso del file da caricare.

Gestisci il popup di caricamento dei file in Selenium Webdriver
gestire il popup di caricamento dei file nel webdriver selenio

Supponiamo di voler caricare il file "C: \ newhtml.html". Il nostro codice WebDriver dovrebbe essere come quello mostrato di seguito.

pacchetto newproject;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;public class PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/upload/";Driver WebDriver = nuovo FirefoxDriver ();driver.get (baseUrl);WebElement uploadElement = driver.findElement (By.id ("uploadfile_0"));// immettere il percorso del file nel campo di input per la selezione del fileuploadElement.sendKeys ("C: \\ newhtml.html");// seleziona la casella di controllo "Accetto i termini di servizio"driver.findElement (By.id ("terms")). click ();// fare clic sul pulsante "UploadFile"driver.findElement (By.name ("invia")). click ();}}

Dopo aver eseguito questo script, dovresti essere in grado di caricare il file correttamente e dovresti ricevere un messaggio simile a questo.

Ricorda di seguire due cose quando carichi i file in WebDriver

  1. Non è necessario simulare il clic del pulsante "Sfoglia". WebDriver inserisce automaticamente il percorso del file nella casella di testo di selezione dei file dell'elemento
  2. Quando si imposta il percorso del file nel proprio IDE Java, utilizzare il carattere di escape appropriato per la barra rovesciata.

Download di file

WebDriver non è in grado di accedere alle finestre di dialogo di download presentate dai browser quando si fa clic su un collegamento o un pulsante per il download. Tuttavia, possiamo ignorare queste finestre di dialogo utilizzando un programma separato chiamato "wget".

Cos'è Wget?

Wget è un programma a riga di comando piccolo e facile da usare utilizzato per automatizzare i download . Fondamentalmente, accediamo a Wget dal nostro script WebDriver per eseguire il processo di download.

Configurazione di Wget

Passaggio 1: nell'unità C, crea una nuova cartella e chiamala "Wget".

Scarica wget.exe da qui e posizionalo nella cartella Wget creata dal passaggio precedente.

Passaggio 2: Apri Esegui premendo il tasto Windows + "R"; digita "cmd e fai clic su ok

Digita il comando "cd /" per passare alla directory principale

Passaggio 3: digitare il comando per verificare se la configurazione fornita funziona

cmd / c C: \\ Wget \\ wget.exe -PC: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe

Sembra che ci sia un problema durante la scrittura nell'unità C.

Passaggio 4: è necessario eseguire il debug degli errori wget nella riga di comando prima di eseguire il codice utilizzando Selenium Webdriver. Questi errori persisteranno in Eclipse ei messaggi di errore non saranno così informativi. Meglio prima far funzionare wget usando la riga di comando. Se funziona nella riga di comando, funzionerà sicuramente in Eclipse.

Nel nostro esempio, come mostrato nel passaggio 3, si è verificato un problema durante la scrittura nell'unità C. Cambiamo il percorso di download in D drive e controlliamo i risultati.

cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe

Messenger è stato scaricato con successo.

Prima di procedere oltre, non dimenticare di eliminare il file scaricato

Utilizzando WebDriver e Wget

Nel seguente esempio, utilizzeremo WebDriver e wget per scaricare un popolare software di chat chiamato Yahoo Messenger. Il nostro URL di base sarà http://demo.guru99.com/test/yahoo.html.

Passo 1

Importare il pacchetto "java.io.IOException" perché dovremo catturare un'IOException più avanti nel passaggio 4.

Passo 2

Utilizzare getAttribute () per ottenere il valore "href" del collegamento per il download e salvarlo come variabile String. In questo caso, abbiamo chiamato la variabile "sourceLocation".

Passaggio 3

Imposta la sintassi per wget utilizzando il seguente comando.

Passaggio 4

Avvia il processo di download chiamando wget dal nostro codice WebDriver.

Per riassumere, il tuo codice WebDriver potrebbe assomigliare a quello mostrato di seguito.

pacchetto newproject;import java.io.IOException;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;public class PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/yahoo.html";Driver WebDriver = nuovo FirefoxDriver ();driver.get (baseUrl);WebElement downloadButton = driver.findElement (By.id ("messenger-download"));String sourceLocation = downloadButton.getAttribute ("href");String wget_command = "cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate" + sourceLocation;provare {Processo exec = Runtime.getRuntime (). Exec (wget_command);int exitVal = exec.waitFor ();System.out.println ("Valore di uscita: + exitVal);} catch (InterrruptException | IOException ex) {System.out.println (ex.toString ());}driver.close ();}}

Dopo aver eseguito questo codice, controlla l'unità D e verifica che il programma di installazione di Yahoo Messenger sia stato scaricato con successo lì.

Sommario

  • Il caricamento dei file in WebDriver viene eseguito semplicemente utilizzando il metodo sendKeys () nel campo di immissione di selezione del file per inserire il percorso del file da caricare.
  • WebDriver non può automatizzare il download dei file da solo.
  • Il modo più semplice per scaricare file utilizzando WebDriver è utilizzare Wget.