为什么在IE中使用Robot下载后,Webdriver不再找到元素

时间:2017-07-25 19:24:46

标签: java selenium awtrobot

我正在使用IE中的Java Robot自动从网站下载文件。

在下载结束时,驱动程序无法再找到元素,包括我刚刚使用过的元素。我已经检查过驱动程序仍然具有相同的窗口处理程序。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

WebDriver driver = new FirefoxDriver();

driver.get("http://somepage");

Robot robot = new Robot();        
WebElement exportButton = driver.findElement("//*[contains(@href,'stuff')]");

exportButton.sendKeys("");

robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

// Wait for Save As dialog            
Thread.sleep(2000);

// Tab over to Save button
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_N);
robot.keyRelease(KeyEvent.VK_N);
robot.keyRelease(KeyEvent.VK_ALT);
Thread.sleep(2000);

robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB); 
Thread.sleep(2000);

// Press Enter on Save button
robot.keyPress(KeyEvent.VK_ENTER);

// This will throw a Webdriver Exception that it could not be found.
driver.findElement("//*[contains(@href,'stuff')]);

这最后一个findElement失败了,其他任何以前工作的xpath都失败了。

1 个答案:

答案 0 :(得分:0)

您当前的问题是,在完成所有机器人操作后,浏览器已从网页失去焦点到某些浏览器对话框。

一般来说,使用WebDriver下载文件并不是最好的解决方案。你为什么需要下载文件?你打算用它做什么吗?为什么你使用IE浏览器而不是Chrome浏览器?

这里有一个很好的解释:https://sqa.stackexchange.com/questions/2197/how-to-download-a-file-using-seleniums-webdriver

简而言之,您最好使用某些第三方库/ http客户端下载文件。