Java 使用Robot类从windows弹出窗口上载文件失败
我使用下面的代码在我的应用程序中选择并导入csv文件。文件路径被粘贴,我也可以看到导入的数据,但我的测试用例仍然失败,我无法找出原因Java 使用Robot类从windows弹出窗口上载文件失败,java,selenium,selenium-webdriver,file-import,Java,Selenium,Selenium Webdriver,File Import,我使用下面的代码在我的应用程序中选择并导入csv文件。文件路径被粘贴,我也可以看到导入的数据,但我的测试用例仍然失败,我无法找出原因 public static void uploadFileFromFolder(String objectType, String objectName, String data) { // creating instance of Robot class try { StringSelection ss =
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();
}
}
如果坚持机器人方法并不重要,我建议您以这种方式处理文件上传:
// 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");
String getFilePath(String filePath) {
new File(filePath).absolutePath
}
如果是RemoteDriver,请不要忘记添加以下内容:
// Configure your client to upload local files to remote Selenium instance
driver.setFileDetector(new LocalFileDetector());
注意:文件路径应该是绝对的。您可以这样做:
// 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");
String getFilePath(String filePath) {
new File(filePath).absolutePath
}
请注意,这种方法在Windows和LinuxHey@S.Plekhanov中都适用。谢谢。它不起作用。我得到一份工作invocationtargetexception@user765,哪一行给你一个例外?