Как загрузить файл с помощью Selenium WebDriver в Java
Может ли кто-нибудь дать мне знать, как загрузить файл, используя Selenium с помощью кода Java?
Когда я нажимаю кнопку в приложении, она открывается в новом окне, что я могу использовать для выбора файла загрузки. Кнопка обзора, разработанная Silverlight (С#).
Ответы
Ответ 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