Cómo subir & Descargar un archivo usando Selenium Webdriver

Tabla de contenido

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

Carga de archivos

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

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

Manejar la ventana emergente de carga de archivos en Selenium Webdriver
manejar la ventana emergente de carga de archivos en selenium webdriver

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

paquete newproject;importar org.openqa.selenium. *;importar org.openqa.selenium.firefox.FirefoxDriver;clase pública PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/upload/";Controlador WebDriver = nuevo FirefoxDriver ();driver.get (baseUrl);WebElement uploadElement = driver.findElement (By.id ("uploadfile_0"));// ingrese la ruta del archivo en el campo de entrada de selección de archivouploadElement.sendKeys ("C: \\ newhtml.html");// marque la casilla de verificación "Acepto las condiciones del servicio"driver.findElement (By.id ("términos")). click ();// haga clic en el botón "Subir archivo"driver.findElement (By.name ("enviar")). click ();}}

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

Recuerde seguir dos cosas al cargar archivos en WebDriver

  1. No es necesario simular el clic del botón "Examinar". WebDriver ingresa automáticamente la ruta del archivo en el cuadro de texto de selección de archivo del elemento
  2. Cuando establezca la ruta del archivo en su IDE de Java, use el carácter de escape adecuado para la barra invertida.

Descargando archivos

WebDriver no tiene capacidad para acceder a los cuadros de diálogo Descargar presentados por los navegadores cuando hace clic en un enlace o botón de descarga. Sin embargo, podemos omitir estos cuadros de diálogo usando 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 las descargas . Básicamente, accederemos a Wget desde nuestro script WebDriver para realizar el proceso de descarga.

Configurando Wget

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

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

Paso 2: Abra Ejecutar presionando la tecla de Windows + "R"; escriba "cmd y haga clic en Aceptar

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

Paso 3: escriba el comando para verificar si la configuración dada está funcionando

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

Parece haber un problema al escribir en la unidad C.

Paso 4: Necesita 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 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 -PD: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe

Messenger se descargó correctamente.

Antes de continuar, no olvide eliminar el archivo descargado

Usando WebDriver y Wget

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

Paso 1

Importe el paquete "java.io.IOException" porque tendremos que detectar una IOException más adelante en el paso 4.

Paso 2

Utilice getAttribute () para obtener el valor "href" del enlace de descarga y guárdelo como una variable de cadena. En este caso, nombramos la variable como "sourceLocation".

Paso 3

Configure la sintaxis de wget usando el siguiente comando.

Paso 4

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

En resumen, su código de WebDriver podría parecerse al que se muestra a continuación.

paquete newproject;import java.io.IOException;importar org.openqa.selenium. *;importar org.openqa.selenium.firefox.FirefoxDriver;clase pública PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/yahoo.html";Controlador WebDriver = nuevo FirefoxDriver ();driver.get (baseUrl);WebElement downloadButton = driver.findElement (Por.id ("descarga de mensajería"));String sourceLocation = downloadButton.getAttribute ("href");Cadena wget_command = "cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate" + sourceLocation;tratar {Process exec = Runtime.getRuntime (). Exec (wget_command);int exitVal = exec.waitFor ();System.out.println ("Valor de salida: + 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 correctamente allí.

Resumen

  • La carga de archivos en WebDriver se realiza simplemente usando el método sendKeys () en el campo de entrada de selección de archivo 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 fácil de descargar archivos usando WebDriver es usar Wget.

Articulos interesantes...