2017-07-25 1 views
0

IEのJavaロボットを使用してサイトからファイルをダウンロードすることを自動化しています。IEをダウンロードするためにRobotを使用した後、Webdriverが要素を検出しないのはなぜですか?

ダウンロードが終わると、ドライバは私が使ったものを含めてもはや要素を見つけることができません。私はドライバがまだ同じウィンドウハンドラを持っていることを確認しました。

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

回答が必要な場合は、[mcve]を入力する必要があります。 – SiKing

+0

申し訳ありませんが、私はドライバを追加し、ページを取得します。 – dranobob

答えて

0

あなたの現在の問題は、すべてのロボットの操作後にブラウザがWebページからいくつかのブラウザダイアログにフォーカスを失ったことです。

一般的に言えば、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

関連する問題