Cómo cargar y descargar un archivo usando Selenium Webdriver

Subir archivo en selenio

La carga de archivos en WebDriver se realiza simplemente usando el método sendKeys() en el campo de entrada de selección de archivos para ingresar la ruta al archivo que se va a cargar.

En este tutorial, aprenderemos cómo lidiar con las cargas y descargas de archivos.

Cómo cargar un archivo en Selenium

Para esta sección usaremos https://demo.guru99.com/test/upload/ como nuestra aplicación de prueba. Este sitio permite fácilmente que cualquier visitante cargue archivos sin necesidad de registrarse.

Cargar archivo en Selenium
Manejar la ventana emergente de carga de archivos en Selenium Webdriver

Digamos que deseamos cargar el archivo "C:\newhtml.html". Nuestro código WebDriver debería ser como el que se muestra a continuación.

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();
        }
}

Después de ejecutar este script, debería poder cargar el archivo correctamente y debería recibir un mensaje similar a este.

Cargar archivo en Selenium

Recuerda seguirwing dos cosas al cargar archivos en WebDriver

  1. No es necesario simular el clic en el botón “Examinar”. WebDriver ingresa automáticamente la ruta del archivo en el texto de selección de archivo box del elemento
  2. Al configurar la ruta del archivo en su IDE de Java, utilice el carácter de escape adecuado para la barra invertida.

Cargar archivo en Selenium

Cómo descargar un archivo en Selenium Webdriver

WebDriver no tiene capacidad para acceder al cuadro de diálogo Descargar boxes presentado por los navegadores cuando hace clic en un enlace o botón de descarga. Sin embargo, podemos omitir estos cuadros de diálogo. boxEstá utilizando un programa separado llamado "wget".

¿Qué es Wget?

Wget es un programa de línea de comandos pequeño y fácil de usar que se utiliza para automatizar descargas.. Básicamente accederemos a Wget desde nuestro script WebDriver para realizar el proceso de descarga.

Configurando Wget

Paso 1) En su unidad C, cree una nueva carpeta y asígnele el nombre "Wget".

Descargar wget.exe desde aquí y colóquelo en la carpeta Wget que creó en el paso anterior.

Configurando Wget

Paso 2) Abra Ejecutar presionando windows tecla + “R”; escriba "cmd y haga clic en Aceptar

Configurando Wget

Escriba el comando "cd /" para pasar al directorio raíz

Configurando Wget

Paso 3) Escriba el comando para comprobar si la configuración dada está funcionando

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

Configurando Wget

Parece haber un problema al escribir en la unidad C.

Paso 4) Debe depurar los errores de wget en la línea de comando antes de ejecutar el código usando Selenium Webdriver. Estos errores persistirán en Eclipse y los mensajes de error no serán tan informativos. Lo mejor es hacer que wget funcione primero usando la línea de comando. Si funciona en la línea de comando, definitivamente funcionará en Eclipse.

En nuestro ejemplo, como se muestra en el paso 3, hay un problema al escribir en la unidad C. Cambiemos la ubicación de descarga a la unidad D y verifiquemos los resultados.

cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Configurando Wget

Messenger se descargó exitosamente.

Antes de continuar, no olvide eliminar el archivo descargado.

Usando WebDriver y Wget

en el siguientewing Por ejemplo, usaremos WebDriver y wget para descargar un popular software de chat llamado Yahoo Messenger. Nuestra URL base será https://demo.guru99.com/test/yahoo.html.

Usando WebDriver y Wget

Paso 1) Importe el paquete “java.io.IOException” porque tendremos que detectar una IOException later en el Paso 4.

Usando WebDriver y Wget

Paso 2) Utilice getAttribute() para obtener el valor "href" del enlace de descarga y guárdelo como una variable de cadena. En este caso, llamamos a la variable "ubicación de origen".

Usando WebDriver y Wget

Paso 3) Configure la sintaxis para wget usando lo siguientewing mando.

Usando WebDriver y Wget

Paso 4) Inicie el proceso de descarga llamando a wget desde nuestro código WebDriver.

Usando WebDriver y Wget

Para resumir todo, su código WebDriver podría verse como el que se muestra a continuación.

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();
        }
        
}

Después de ejecutar este código, verifique su unidad D y verifique que el instalador de Yahoo Messenger se haya descargado exitosamente allí.

Usando WebDriver y Wget

Resumen

  • La carga de archivos en WebDriver se realiza simplemente usando el método sendKeys() en el campo de entrada de selección de archivos para ingresar la ruta al archivo que se va a cargar.
  • WebDriver no puede automatizar la descarga de archivos por sí solo.
  • La forma más sencilla de descargar archivos usando WebDriver es usar Wget.