Come caricare e scaricare un file utilizzando Selenium Webdriver
Carica il file in selenio
Il caricamento di file in WebDriver viene effettuato semplicemente utilizzando il metodo sendKeys() nel campo di input di selezione file per inserire il percorso del file da caricare.
In questo tutorial impareremo come gestire i caricamenti e i download di file.
Come caricare il file in Selenium
Per questa sezione utilizzeremo https://demo.guru99.com/test/upload/ come nostra applicazione di prova. Questo sito consente facilmente a qualsiasi visitatore di caricare file senza richiedere la registrazione.
Diciamo che vogliamo caricare il file “C:\newhtml.html”. Il nostro codice WebDriver dovrebbe essere come quello mostrato di seguito.
package 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 = "https://demo.guru99.com/test/upload/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement uploadElement = driver.findElement(By.id("uploadfile_0")); // enter the file path onto the file-selection input field uploadElement.sendKeys("C:\\newhtml.html"); // check the "I accept the terms of service" check box driver.findElement(By.id("terms")).click(); // click the "UploadFile" button driver.findElement(By.name("send")).click(); } }
Dopo aver eseguito questo script, dovresti essere in grado di caricare il file con successo e dovresti ricevere un messaggio simile a questo.
Ricordati di seguire due cose quando carichi i file in WebDriver
- Non c'è bisogno di simulare il clic sul pulsante "Sfoglia". WebDriver inserisce automaticamente il percorso del file nella casella di testo di selezione file del elemento
- Quando imposti il percorso del file nel tuo Java IDE, utilizza il carattere di escape corretto per la barra rovesciata.
Come scaricare un file in Selenium Webdriver
WebDriver non ha la capacità di accedere alle finestre di dialogo Download presentati dai browser quando clicchi su un link o un pulsante di download. Tuttavia, possiamo bypassare queste finestre di dialogo usando un programma separato chiamato "wget".
Cos'è Wget?
Wget è un programma da riga di comando piccolo e facile da usare utilizzato per automatizzare i download. Fondamentalmente, accederemo a Wget dal nostro script WebDriver per eseguire il processo di download.
Configurazione di Wget
Passo 1) Nel tuo C Drive, crea una nuova cartella e chiamala "Wget".
Scarica wget.exe da qui e inseriscilo nella cartella Wget creata dal passaggio precedente.
Passo 2) Apri Esegui premendo il tasto Windows + "R"; digita "cmd e fai clic su OK
Digitare il comando "cd /" per spostarsi nella directory principale
Passo 3) Digita il comando per verificare se la configurazione specificata funziona
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Sembra che ci sia un problema durante la scrittura nell'unità C.
Passo 4) È necessario eseguire il debug degli errori wget nella riga di comando prima di eseguire il codice utilizzando Selenium Webdriver. Questi errori persisteranno Eclipse e i 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 anche 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 sull'unità D e controlliamo i risultati.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://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
Nell'esempio seguente, useremo WebDriver e wget per scaricare un popolare software di chat chiamato Yahoo Messenger. Il nostro URL di base sarà https://demo.guru99.com/test/yahoo.html.
Passo 1) Importare il pacchetto “java.io.IOException” perché dovremo intercettare un IOException più avanti nel passaggio 4.
Passo 2) Utilizzare getAttribute() per ottenere il valore "href" del collegamento di download e salvarlo come variabile String. In questo caso, abbiamo denominato la variabile "sourceLocation".
Passo 3) Imposta la sintassi per wget usando il seguente comando.
Passo 4) Avvia il processo di download chiamando wget dal nostro codice WebDriver.
Per riassumere, il codice del tuo WebDriver potrebbe assomigliare a quello mostrato di seguito.
package 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 = "https://demo.guru99.com/test/yahoo.html"; WebDriver driver = new 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 -P D: --no-check-certificate " + sourceLocation; try { Process exec = Runtime.getRuntime().exec(wget_command); int exitVal = exec.waitFor(); System.out.println("Exit value: " + exitVal); } catch (InterruptedException | IOException ex) { System.out.println(ex.toString()); } driver.close(); } }
Dopo aver eseguito questo codice, controlla l'unità D e verifica che Yahoo Messenger il programma di installazione è stato scaricato correttamente lì.
Sommario
- Il caricamento di file in WebDriver viene effettuato semplicemente utilizzando il metodo sendKeys() nel campo di input di selezione file per inserire il percorso del file da caricare.
- WebDriver non può automatizzare da solo il download dei file.
- Il modo più semplice per scaricare file utilizzando WebDriver è utilizzare Wget.