使用Selenium WebDriver和Java Robot Class上传文件

我正在使用Selenium WebDriver和Java,我需要自动化文件上传功能。我尝试了很多,但是当单击“浏览”按钮并打开新窗口时,脚本停止进一步执行,而是卡住了。我在FireFox和IE驱动程序中都尝试过,但无济于事。

我也尝试通过调用autoit exe文件,但是当新窗口在单击“浏览”按钮时打开时,特定语句

Runtime.getRuntime().exec("C:\\Selenium\\ImageUpload_FF.exe")

不能被解释。请帮忙


答案 1

这应该适用于Firefox,Chrome和IE驱动程序。

FirefoxDriver driver = new FirefoxDriver();

driver.get("http://localhost:8080/page");

File file = null;

try {
    file = new File(YourClass.class.getClassLoader().getResource("file.txt").toURI());
} catch (URISyntaxException e) {
    e.printStackTrace();
}

Assert.assertTrue(file.exists()); 

WebElement browseButton = driver.findElement(By.id("myfile"));
browseButton.sendKeys(file.getAbsolutePath());

答案 2

我想我需要在亚历克斯的答案中添加一些东西。

我尝试使用此代码打开“打开”窗口:

driver.findElement(My element).click()

窗口打开了,但驾驶员变得无响应,代码中的操作甚至没有到达机器人的操作。我不知道发生这种情况的原因,可能是因为浏览器失去了焦点。

我让它工作的方式是通过使用 Actions selenium 类:

 Actions builder = new Actions(driver);

 Action myAction = builder.click(driver.findElement(My Element))
       .release()
       .build();

    myAction.perform();

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

推荐