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.
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.
Recuerde seguir dos cosas al cargar archivos en WebDriver
- 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
- Al configurar la ruta del archivo en su Java IDE, utilice el carácter de escape adecuado para la barra invertida.
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.
Paso 2) Abra Ejecutar presionando la tecla de Windows + “R”; escriba “cmd” y haga clic en Aceptar
Escriba el comando "cd /" para pasar al directorio raíz
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
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
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.
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, llamamos a la variable "ubicación de origen".
Paso 3) Configure la sintaxis para wget usando el siguiente comando.
Paso 4) Inicie el proceso de descarga llamando a wget desde nuestro código WebDriver.
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í.
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.