我正在使用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都失败了。
答案 0 :(得分:0)
您当前的问题是,在完成所有机器人操作后,浏览器已从网页失去焦点到某些浏览器对话框。
一般来说,使用WebDriver下载文件并不是最好的解决方案。你为什么需要下载文件?你打算用它做什么吗?为什么你使用IE浏览器而不是Chrome浏览器?
这里有一个很好的解释:https://sqa.stackexchange.com/questions/2197/how-to-download-a-file-using-seleniums-webdriver。
简而言之,您最好使用某些第三方库/ http客户端下载文件。