2017-07-25 56 views
0

我在IE中使用Java Robot自動從一個站點下載文件。爲什麼Webdriver在IE中使用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失敗,就像之前工作的其他xpaths一樣。

+0

如果您希望得到答案,您需要提供[mcve]。 – SiKing

+0

對不起,我添加了驅動程序inits和頁面獲取。 – dranobob

回答

0

您目前的問題是,在所有這些機器人操作之後,瀏覽器已經從網頁失去了焦點到某個瀏覽器對話框。

一般來說,用WebDriver下載文件並不是最好的解決方案。爲什麼你需要下載文件?你會用它做什麼?爲什麼你使用IE,而不是Firefox的Chrome?

關於此問題的長篇答案在此完整地解釋:https://sqa.stackexchange.com/questions/2197/how-to-download-a-file-using-seleniums-webdriver

總之,你最好使用一些第三方庫/ http客戶端來下載文件。

+0

該文件正在作爲e2e測試套件的一部分下載。我們需要下載並驗證文件內容,作爲我們測試的一部分。對於我們爲什麼不能直接獲取鏈接並直接下載是一個漫長的故事,它不會與被測系統的安全性兼容。我們也測試Chrome和Firefox,並且它們的功能非常好。令人遺憾的是,我們約有10%的客戶羣仍在使用IE,因此我們也需要對其進行測試。 – dranobob

+0

所以我絕對明白這不是一個理想的測試,但它的一項任務是專門爲IE自動化。 – dranobob

相關問題