Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Имейте в виду, что загрузка будет работать только Если элемент, который вы отправляете, должен быть в форме <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 для ввода пути к файлу и нажмите кнопку отправки. Если текстового поля нет, чтобы ввести путь к файлу и только нажать кнопку обзора и выбрать файл из всплывающего окна, вы можете использовать инструмент AutoIt, см. Следующий шаг, чтобы использовать AutoIt для этого,

  • Загрузите и установите инструмент Autoit из http://www.autoitscript.com/site/autoit/

  • Открыть программы → Инструмент автообнаружения → Редактор SciTE Script.

  • Вставьте следующий код в редактор Autoit и сохраните его как "filename.exe" (например: new.exe)

    Затем скомпилируйте и создайте файл, чтобы сделать его exe. (Инструменты → Скомпилировать)

Код автозагрузки:

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

Затем откомпилируйте и скомпилируйте из меню Инструменты инструмента Autoit → SciTE Script.

Вставьте приведенный ниже код Java в редактор Eclipse и сохраните

Код 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.

Ответ 5

Я попытался использовать вышеописанный робот необходимо добавить задержку:( также вы не можете отлаживать или делать что-то еще, потому что теряете фокус: (

//открыть окно загрузки   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);

Ответ 6

Найдите тег как type="file". это основной тег, который поддерживается селеном. Если вы можете построить XPath с тем же, когда это рекомендуется.

  • используйте кнопки отправки для кнопки с возможностью просмотра (кнопка, которая откроется ваше окно для выбора файлов)
  • Теперь нажмите кнопку, которая будет загружать ваш файл

Как показано ниже: -

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

Для загрузки нескольких файлов поместите все файлы по одному с помощью sendkeys, а затем нажмите кнопку "Загрузить"

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