如何使用带有java的webdriver将文件从本地上传到webapp?

时间:2014-07-10 13:58:39

标签: java selenium-webdriver

我必须将Excel文件导入Web应用程序。要导入第一个,我必须单击导入btn,这将弹出另一个具有浏览btn的窗口。单击browsebtn将打开操作系统对话框。我想在此对话框中发送文件路径,然后选择文件并单击上传。 这是我正在使用的代码:

String path="C:/excelFiles";
Robot robot;

WebDriverWait wait=new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(importExcelbtn));
importExcelbtn.click();
browseBtn.sendKeys(path);
wait(4);
browseBtn.click();

wait(4);


StringSelection sel=new StringSelection(excelFileToImport);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel,null);

System.out.println("File to upload:"+ sel);
robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
wait(3);            
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
okBtn.click();
} catch (AWTException e) {
e.printStackTrace();
}

问题是,我的代码打开了所有窗口,但它没有/不能在OS对话框中输入正确的文件路径,因此最终测试失败。请帮忙。

1 个答案:

答案 0 :(得分:0)

单击“导入”按钮后,添加此代码。还有一个问题,在模态对话框打开后,哪个按钮聚焦如打开/取消。添加模态对话框的屏幕截图以获得更好的答案。

     setClipboardData("C:\\excelFiles");
     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);
     robot.delay(5000);

     public static void setClipboardData(String string) 
    {
       StringSelection StrSelect = new StringSelection(string);
       Toolkit.getDefaultToolkit().getSystemClipboard().setContents(StrSelect, null);
    }