Не удается загрузить файл из всплывающего окна Windows с помощью класса Robot
Я использую приведенный ниже код для выбора и импорта CSV-файла в моем приложении. Путь к файлу вставляется, и я также вижу, как импортируются данные, но мой тестовый пример все равно не пройден, и я не могу понять, почему.
public static void uploadFileFromFolder(String objectType, String objectName, String data) {
// creating instance of Robot class
try {
StringSelection ss = new StringSelection(data);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
// paste file path in windows pop-up
Robot robot = new Robot();
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);
} catch (AWTException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
1 ответ
Если придерживаться подхода робота не важно, я бы посоветовал вам обработать загрузку файлов следующим образом:
// Find file input element
WebElement input = driver.findElement(By.cssSelector("input[type='file']"));
// Make sure element is visible
((JavascriptExecutor) driver).executeScript("arguments[0].style.display = 'block';", input);
// Specify you local file path here
input.sendKeys("/path/to/file/on/machine/which/runs/tests");
В случае RemoteDriver не забудьте добавить это:
// Configure your client to upload local files to remote Selenium instance
driver.setFileDetector(new LocalFileDetector());
ПРИМЕЧАНИЕ: путь к файлу должен быть абсолютным. Вы можете сделать это следующим образом:
String getFilePath(String filePath) {
new File(filePath).absolutePath
}