Cómo cargar y descargar un archivo usando Selenium

⚡ Resumen inteligente

Cargar y descargar archivos usando Selenium Los flujos de trabajo de WebDriver dependen de sendKeys() nativo para campos de entrada, AutoIt o Robot para diálogos y comandos CDP en Selenium 4. Para establecer rutas de descarga seguras durante las ejecuciones de automatización.

  • 📤 Método de carga: Utilice sendKeys() en el elemento de entrada de archivo para enviar la ruta de archivo absoluta sin hacer clic en Examinar.
  • 📥 Ruta de descarga: Configure un directorio de descarga personalizado a través de ChromeOptions o CDP Page.setDownloadBehavior en Selenium 4.
  • 🪟 Diálogos nativos: Ejecuta scripts de AutoIt o java.awt.Robot cuando el selector de archivos del sistema operativo impida la interacción con WebDriver.
  • 🤖 Asistencia de IA: La IA generativa sugiere selectores, crea archivos de datos de prueba y valida automáticamente la integridad de los archivos descargados.
  • 🛡️ Comprobación de validación: Confirme que la carga se ha realizado correctamente mediante mensajes de respuesta y verifique las descargas comparando el tamaño del archivo o la suma de comprobación.

Cómo cargar y descargar un archivo usando Selenium

La carga de archivos en WebDriver se realiza simplemente utilizando el método sendKeys() en el campo de entrada de selección de archivos para ingresar la ruta del archivo que se va a cargar. En este tutorial, aprenderá cómo manejar cargas y descargas de archivos utilizando Selenium Controlador web.

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.

PARA DOS nuevo proyecto;
importar org.openqa.selenium.*;
importar org.openqa.selenium.firefox.FirefoxConductor;
clase pública PG9 {
vacío estático público principal(Cordón[] args) {
Sistema.establecerPropiedad(“webdriver.gecko.driver”,“C:\\geckodriver.exe”);
Cordón URL base = “https://demo.guru99.com/test/upload/”;
Controlador web conductor = ¡nuevos Socios! de FirefoxConductor();

controlador.get(baseUrl);
Elemento web uploadElement = driver.findElement(By.id(“subirarchivo_0”));

// Introduzca la ruta del archivo en el campo de selección de archivos.
uploadElement.sendKeys(“C:\\newhtml.html”);

// Marque la casilla “Acepto los términos del servicio”
conductor.findElement(By.id("términos")).hacer clic();

// haga clic en el botón “Subir archivo”
conductor.findElement(Por.nombre("enviar")).hacer clic();
}
}

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

Recuerda las dos cosas siguientes al subir archivos en WebDriver:

  1. No es necesario simular el clic del botón "Examinar". WebDriver introduce automáticamente la ruta del archivo en el cuadro de texto de selección de archivos. 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 gestionar los cuadros de diálogo de carga sin entrada de datos con AutoIt

Cuando la página utiliza un botón de exploración personalizado en lugar de uno nativo elemento, sendKeys() no funciona. En ese caso, puede llamar a un script de AutoIt desde Selenium Escriba la ruta del archivo en el cuadro de diálogo del sistema operativo y pulse Intro.

Guarde el script a continuación como subir.au3compilarlo a subir.exe, luego invócalo desde Java después de hacer clic en el botón Examinar.

; upload.au3 – espera el cuadro de diálogo Abrir y escribe la ruta del archivo
WinWaitActive(“Open”)
Enviar(“C:\newhtml.html”)
Enviar("{INGRESAR}")

Desde Java, active el asistente después de hacer clic en Examinar:

conductor.findElement(By.id(“botón de navegación”)).hacer clic();
Runtime.getRuntime().exec(“C:\\AutoIt\\upload.exe”);

La clase java.awt.Robot es una clase pura.Java alternativa cuando AutoIt no está disponible, aunque AutoIt es más confiable en Windows porque espera el diálogo por título.

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ócalo en la carpeta Wget que creaste en el paso anterior.

Configurando Wget

Paso 2) Open Run pulsando Windows Presione la tecla "R"; escriba "cmd" y haga clic en Aceptar.

Configurando Wget

Escribe el comando “cd /” para ir al directorio raíz.

Configurando Wget

Paso 3) Introduzca el comando para comprobar si la configuración dada funciona correctamente.

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

Configurando Wget

Parece haber un problema al escribir en la unidad C.

Paso 4) Necesitas depurar los errores de wget en la línea de comandos 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 primero hacer que wget funcione usando 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 comprobemos los resultados.

cmd /c C:\\Wget\\wget.exe -PD: –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. MessengerNuestra base URL 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 tipo String. En este caso, nombramos la variable “sourceLocation”.

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.

PARA DOS nuevo proyecto;
importar java.io.IOException;

importar org.openqa.selenium.*;
importar org.openqa.selenium.firefox.FirefoxConductor;
clase pública PG8 {
vacío estático público principal(Cordón[] args) {

Sistema.establecerPropiedad(“webdriver.gecko.driver”,“C:\\geckodriver.exe”);
Cordón URL base = “https://demo.guru99.com/test/yahoo.html”;
Controlador web conductor = ¡nuevos Socios! de FirefoxConductor();

controlador.get(baseUrl);
Elemento web DownloadButton = driver.findElement(By.id(“descarga de mensajero”));
Cordón sourceLocation = downloadButton.getAttribute(“href”);
Cordón wget_comando = “cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate “ + ubicación de origen;

try {
Proceso exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println (Valor de salida: + valor de salida);
} catch (excepción interrumpida | IOException ex) {
System.out.println(ex.toString());
}
controlador.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

Establecer una ruta de descarga personalizada con Selenium 4 CDP

Selenium La versión 4 expone el protocolo de herramientas para desarrolladores de Chrome, que permite controlar el comportamiento de descarga del navegador sin necesidad de herramientas de terceros. El fragmento de código que se muestra a continuación dirige todas las descargas a una carpeta personalizada y omite la opción "Guardar como", de modo que los archivos se guardan en la ubicación esperada por la prueba.

ChromeDriver conductor = ¡nuevos Socios! de Controlador Chrome();
Mapear<Cordón,Objeto> parámetros = ¡nuevos Socios! de HashMap<>();
parámetros.put("comportamiento", "permitir");
parámetros.put(“ruta de descarga”, “D:\\selenium-downloads”);
controlador.executeCdpCommand(“Page.setDownloadBehavior”, parámetros);
conductor.obtener(“https://demo.guru99.com/test/yahoo.html”);
conductor.findElement(By.id(“descarga de mensajero”)).hacer clic();

Puedes verificar la descarga consultando el directorio de destino para comprobar el nombre de archivo esperado y verificando su tamaño, lo que hace que la prueba sea determinista sin necesidad de scripts externos.

Preguntas Frecuentes

Selenium llama a sendKeys() en el Elemento con la ruta de archivo absoluta. El navegador rellena el campo directamente, por lo que no se abre el selector de archivos del sistema operativo ni es necesario hacer clic en "Examinar".

Cuando la página no expone una entrada de archivo, utilice AutoIt en Windows o la clase java.awt.Robot. Estas herramientas escriben la ruta en el cuadro de diálogo del sistema operativo activo y pulsan Intro una vez que se haya hecho clic en el botón Examinar.

Llama a executeCdpCommand(“Page.setDownloadBehavior”, params) con el comportamiento establecido en permitir y downloadPath establecido en tu carpeta. Selenium La opción 4 reenvía el comando a las herramientas para desarrolladores de Chrome y se omite la solicitud de guardar como.

Sí. Los asistentes de IA leen el formulario de carga, sugieren selectores, generan archivos límite (como muestras vacías, de tamaño excesivo o con extensión incorrecta) y escriben el bloque sendKeys(). Esto reduce el tiempo de configuración y detecta casos límite que los evaluadores humanos suelen pasar por alto.

Herramientas de AI Analiza la carpeta de destino, compara el tamaño del archivo y la suma de verificación con los valores esperados e identifica las discrepancias. Los modelos de visión artificial incluso pueden abrir archivos PDF o imágenes y confirmar que el contenido coincide con la etiqueta del enlace, eliminando la necesidad de revisión manual en las pruebas de regresión.

Wget omite por completo el navegador y guarda el archivo directamente en el disco mediante un proceso de línea de comandos. Es útil en sistemas heredados. Selenium 2 o 3 configuraciones donde las preferencias de descarga de CDP y ChromeOptions no están disponibles.

Resumir este post con: