Вопрос-ответ

How to upload file using Selenium WebDriver in Java

Как загрузить файл с помощью Selenium WebDriver в Java

Кто-нибудь может сообщить мне, как загрузить файл с помощью Selenium с помощью Java-кода?

Когда я нажимаю на кнопку в приложении, оно открывается в новом окне, которое я могу использовать для выбора загрузки файла. Кнопка просмотра, разработанная Silverlight (C #).

Переведено автоматически
Ответ 1

Сначала убедитесь, что входной элемент виден

Как указано Марком Коллином в обсуждении здесь:


Не нажимайте на кнопку "Обзор", это вызовет диалоговое окно на уровне операционной системы и фактически остановит ваш тест.


Вместо этого вы можете использовать:


driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");


myUploadElement - это идентификатор этого элемента (в данном случае кнопки), а в SendKeys вы должны указать абсолютный путь к контенту, который вы хотите загрузить (изображение, видео и т.д.). Selenium сделает все остальное за вас.

Имейте в виду, что загрузка будет работать только если элемент, который вы отправляете файлу, должен иметь форму <input type="file">

Ответ 2
driver.findElement(By.id("urid")).sendKeys("drive:\\path\\filename.extension");
Ответ 3

Это то, что я использую для загрузки изображения через окно загрузки:

    //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);

Выполнено

Ответ 4

Если у вас есть текстовое поле для ввода пути к файлу, просто используйте sendkeys для ввода пути к файлу и нажмите на кнопку отправки. Если нет текстового поля для ввода пути к файлу и можно только нажать кнопку "Обзор" и выбрать файл из всплывающего окна Windows, вы можете использовать инструмент AutoIt, см. Шаг ниже, чтобы использовать AutoIt для того же,


  1. Download and Install Autoit tool from http://www.autoitscript.com/site/autoit/



  2. Open Programs -> Autoit tool -> SciTE Script Editor.



  3. Paste the following code in Autoit editor and save it as “filename.exe “(eg: new.exe)


    Then compile and build the file to make it exe. (Tools → Compile)



Autoit Code:

WinWaitActive("File Upload"); Name of the file upload window (Windows Popup Name: File Upload)    
Send("logo.jpg"); File name
Send("{ENTER}")

Then Compile and Build from Tools menu of the Autoit tool -> SciTE Script Editor.

Paste the below Java code in Eclipse editor and save

Java Code:

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.
java selenium-webdriver