Cómo cargar y descargar un archivo usando Selenium controlador web

Subir archivo en selenium

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.

Subir archivo en Selenium
Manejar la ventana emergente de carga de archivos en Selenium controlador web

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.

Subir archivo en Selenium

Recuerde seguir dos cosas al cargar archivos en WebDriver

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

Subir archivo en Selenium

Cómo descargar un archivo en Selenium controlador web

WebDriver no tiene capacidad para acceder a los cuadros de diálogo de descarga que presentan los navegadores cuando hace clic en un enlace o botón de descarga. Sin embargo, podemos evitar estos cuadros de diálogo utilizando un programa independiente 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 la tecla de Windows + “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 Controlador web. Estos errores persistirán en Eclipse y los mensajes de error no serán tan informativos. Lo mejor es hacer que wget funcione primero mediante la línea de comandos. Si funciona en la línea de comandos, 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 siguiente ejemplo, utilizaremos WebDriver y wget para descargar un software de chat popular 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 más adelante 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 el siguiente comando.

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 Yahoo Messenger El instalador se descargó exitosamente allí.

Usando WebDriver y Wget

Resum

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