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.

Carica file in Selenium
Gestisci il popup di caricamento file in Selenium Webdriver

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.

Carica file in Selenium

Ricordati di seguire due cose quando carichi i file in WebDriver

  1. 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
  2. Quando imposti il ​​percorso del file nel tuo Java IDE, utilizza il carattere di escape corretto per la barra rovesciata.

Carica file in Selenium

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.

Configurazione di Wget

Passo 2) Apri Esegui premendo il tasto Windows + "R"; digita "cmd e fai clic su OK

Configurazione di Wget

Digitare il comando "cd /" per spostarsi nella directory principale

Configurazione di Wget

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

Configurazione di Wget

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

Configurazione di Wget

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.

Utilizzando WebDriver e Wget

Passo 1) Importare il pacchetto “java.io.IOException” perché dovremo intercettare un IOException più avanti nel passaggio 4.

Utilizzando WebDriver e Wget

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".

Utilizzando WebDriver e Wget

Passo 3) Imposta la sintassi per wget usando il seguente comando.

Utilizzando WebDriver e Wget

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

Utilizzando WebDriver e Wget

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ì.

Utilizzando WebDriver e Wget

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.