2017-01-26 3 views
1

私はテストケースを自動化しようとしています。テストケースが失敗した結果、特定の時間にポップメッセージが表示されるのは難しいです。ポップアップが表示される前に、ポップアップがクリックやその他の5-6回のクリックなしで表示されることがあります。 idやxpathがない場合はポップアップを見つけることができません。助けてください!java selenium webdriverで不安定な時刻にポップアップウィンドウが表示された場合のポップアップウィンドウの処理方法を教えてください。

+0

ポップアップは印刷ダイアログのようなシステムのダイアログですか、それともWeb要素ですか?私はAutoITライブラリを使用して、セレンが対話できない奇妙なポップアップやウィンドウを処理しました。 –

答えて

0

ポップアップがWindowsベースの場合は、AutoITライブラリを使用します。 それはウェブポップアップであれば、あなたは、コード

Set<String> set = driver.getWindowHandles(); 
List<String> list = new ArrayList<>(set); 

// store your main window handle in variable 
String mainWindow = list.get(0); 

// To close all unwanted popup 
for(int i =1; i <list.size(); i++) 
{ 
    String unwantedPopup = list.get(i); 
    driver.switchTo().window(unwantedPopup); 
    driver.close(); 
} 

// Switch back to your main window 
driver.switchTo().window(mainWindow); 
+0

ありがとうございます。しかし、コードは動作しません、それは構文エラーがあります。私は把握することができませんでした。私はそれがモーダルダイアログボックスであることを忘れていました。私もdriver.switchTo()を試してみました。window(winHandleBefore); driver.close();アラートアラート= driver.switchTo()。アラート(); alert()。dismiss();.私がThread.sleep(8000)を使用すると、モーダルダイアログボックスが表示されます。私はボックスを閉じることができません私はMac上でクロムにコードを実行している私はまた、他の1つの助けが束を試みた。 –

0

に従うことによってそれを処理することができ、私は私の作品解決策を見つけました。

Thread.sleep(5000); //wait for the modal message to appear 
    String winHandleBefore = driver.getWindowHandle(); 
    driver.findElement(By.xpath("xpath")).click(); 
    Thread.sleep(2000); 
    driver.switchTo().window(winHandleBefore); 
関連する問題