2017-01-26 15 views
1

테스트 사례를 자동화하려고합니다. 결과적으로 특정 시간에 pop 메시지가 나타나기가 어렵 기 때문에 테스트 케이스가 실패합니다. 팝업이 나타나기 전에 클릭 및 기타 5-6 회의 클릭없이 팝업이 나타나는 경우가 있습니다. id 나 xpath가없는 팝업을 찾을 수 없습니다. 도와주세요!Java selenium webdriver에서 불확실한 시간에 팝업 창을 표시 할 때 팝업 창을 처리하는 방법은 무엇입니까?

+0

팝업이 인쇄 대화 상자와 같은 시스템 대화 상자입니까, 아니면 웹 요소입니까? 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(); 경고 alert = driver.switchTo(). alert(); alert(). dismiss();. Thread.sleep (8000)을 사용할 때 모달 대화 상자가 나타납니다. 난 상자를 닫을 수 없습니다. 나는 또한 크롬에서 코드를 실행 중입니다. 또한 다른 도움을받지 못했습니다. –

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);