files - Cómo subir archivos usando Selenium WebDriver en Java
path selenium (6)
Encuentra la etiqueta como type="file"
. esta es la etiqueta principal que es compatible con el selenio. Si puede construir su XPath con el mismo cuando se lo recomiende.
- use sendkeys para el botón que tiene la opción de navegar (El botón que abrirá su ventana para seleccionar archivos)
- Ahora haz clic en el botón que va a subir tu archivo
Como a continuación :-
driver.findElement(By.xpath("//input[@id=''files'']")).sendKeys("D:"+File.separator+"images"+File.separator+"Lighthouse.jpg"");
Thread.sleep(5000);
driver.findElement(By.xpath("//button[@id=''Upload'']")).click();
Para la carga de archivos múltiples, coloque todos los archivos uno por uno mediante sendkeys y luego haga clic en cargar
driver.findElement(By.xpath("//input[@id=''files'']")).sendKeys("D:"+File.separator+"images"+File.separator+"Lighthouse.jpg"");
driver.findElement(By.xpath("//input[@id=''files'']")).sendKeys("D:"+File.separator+"images"+File.separator+"home.jpg");
driver.findElement(By.xpath("//input[@id=''files'']")).sendKeys("D:"+File.separator+"images"+File.separator+"tsquare.jpg");
Thread.sleep(5000);
driver.findElement(By.xpath("//button[@id=''Upload'']")).click(); // Upload button
¿Alguien me puede decir cómo subir un archivo usando Selenium por código Java?
Cuando hago clic en el botón en la aplicación, se abre en la nueva ventana lo que puedo usar para seleccionar subir archivo. El botón Examinar desarrollado por Silverlight (C #).
Esto es lo que uso para subir la imagen a través de la ventana de carga:
//open upload window
upload.click();
//put path to your image in a clipboard
StringSelection ss = new StringSelection("C://IMG_3827.JPG");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
//imitate mouse events like ENTER, CTRL+C, CTRL+V
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
hecho
He intentado usar el robot anterior, hay una necesidad de agregar un retraso :( tampoco puedes depurar ni hacer otra cosa porque pierdes el foco :(
// abrir la ventana de carga upload.click ();
//put path to your image in a clipboard
StringSelection ss = new StringSelection(file.getAbsoluteFile());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
//imitate mouse events like ENTER, CTRL+C, CTRL+V
Robot robot = new Robot();
robot.delay(250);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(50);
robot.keyRelease(KeyEvent.VK_ENTER);
Primero asegúrese de que el elemento de entrada sea visible
Como dijo Mark Collin en la discusión here :
No haga clic en el botón Examinar, se activará un cuadro de diálogo de nivel de sistema operativo y se detendrá de manera efectiva su prueba de muerte.
En cambio, puedes usar:
driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");
myUploadElement es el id de ese elemento (botón en este caso) y en sendKeys debe especificar la ruta absoluta del contenido que desea cargar (Imagen, video, etc.). Selenium hará el resto por ti.
Tenga en cuenta que la carga solo funcionará si el elemento que envía un archivo debe tener el formato <input type="file">
Si tiene un cuadro de texto para escribir la ruta del archivo, solo use sendkeys para ingresar la ruta del archivo y haga clic en el botón de enviar. Si no hay un cuadro de texto para escribir la ruta del archivo y solo puede hacer clic en el botón Examinar y seleccionar el archivo de la ventana emergente, puede usar la herramienta AutoIt, consulte el paso siguiente para usar AutoIt para el mismo,
Descargue e instale la herramienta Autoit desde http://www.autoitscript.com/site/autoit/
Abra Programas -> Herramienta de Autoit -> Editor de SciTE Script.
Pegue el siguiente código en el editor de Autoit y guárdelo como "filename.exe" (por ejemplo: new.exe)
Luego compila y compila el archivo para hacerlo exe. (Herramientas → Compilar)
Código Autoit:
WinWaitActive("File Upload"); Name of the file upload window (Windows Popup Name: File Upload)
Send("logo.jpg"); File name
Send("{ENTER}")
A continuación, compile y cree desde el menú Herramientas de la herramienta Autoit -> Editor de secuencias de comandos SciTE.
Pegue el siguiente código de Java en el editor de Eclipse y guárdelo
Código de Java:
driver.findElement(By.id("uploadbutton")).click; // open the Upload window using selenium
Thread.sleep("20000"); // wait for page load
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "C://Documents and Settings//new.exe"); // Give path where the exe is saved.
driver.findElement(By.id("urid")).sendKeys("drive://path//filename.extension");