2016-06-20 7 views
0

現在のWebアプリケーションに新しいウィンドウが表示されているときに問題が発生しています。java -WindHandleがページリフレッシュのために新しいウィンドウを見つけられないonclick

以下は私が新しいウィンドウを処理するために使用している私の現在のコードです。ログを確認するとき、元のウィンドウのIDは保存されていますが、新しいウィンドウは表示されません。

String parentHandle = driver.getWindowHandle(); 
driver.findElement(By.xpath("//*[@id='someXpath']")).click(); 

この時点で、新しいウィンドウが作成され、元のページが新しい場所にリロードされます。 (合計ウィンドウが2つ)

waitVar.waitforpagetoload(); // JS method to handle page being loaded. 
for (String winHandle : driver.getWindowHandles()) { 
    driver.switchTo().window(winHandle); 
} 
System.out.println("Pop up is: " +winHandle); 
System.out.println("Parent window is: " +parentHandle); 

driver.close(); 
driver.switchTo().window(parentHandle); 

私が値をプリントアウトすると、親ウィンドウと新しいウィンドウの両方に同じ文字列が表示されます。また、forループを使ってdriver.getWindowHandlesの各値を出力し、配列の1つの値(親ウィンドウ)しか取得しないので、エラーを取得しようとしました。私は問題は、ブラウザは、最初のクリック後に再読み込みされていると考えています。クリックした後に元の親ウィンドウが見つかったときに新しいウィンドウを処理する方法に関する提案はありますか?ありがとう!

答えて

0

コードを取得するのに十分な時間がかかりませんでした。 が追加されました。Thread.sleep(3000)明示的待機;すべてが正常に動作します。 最もクリーンなソリューションではありませんが、それは正常に動作します。

+0

Yuck ...これをThread.sleep()ではないように何らかの待ち時間に変更してください。 – JeffC

+0

私はそれ以来、スリープ状態を解除し、明示的なオプションを使用しました。ありがとう:) –

関連する問題