2013-08-08 8 views
-1

WebDriver가 브라우저를 시작하고 URL을 탐색하여 응용 프로그램의 링크를 클릭하면 팝업 창이있는 새 브라우저가 나타나고 우리가 팝업 창을 닫을 때까지 브라우저.Selenium WebDriver의 팝업 창 처리가 작동하지 않습니다.

팝업에는 "확인"버튼 만 있습니다. switchTo(), 창 핸들러를 시도했지만 작동하지 않습니다. 또한이 팝업 차단으로 브라우저를 제어 할 수 없습니다.

+1

게시 코드 및 오류 메시지가 도움이 될 것이다 :

public class WindowManager { private string _parentWindowHandle; private string _popupWindowHandle; public void SwitchWindowFocusToPopup(IWebDriver driver, string NewWindowTitle) { //pass the expected popup window title so the IWebDriver can get //the windowhandle and assign it to the current iWebDriver IWebDriver popup = null; var windowIterator = driver.WindowHandles; foreach (var windowHandle in windowIterator) { popup = driver.SwitchTo().Window(windowHandle); if (popup.Title == NewWindowTitle) { _popupWindowHandle = popup.CurrentWindowHandle; break; } } } #region Properties public string ParentWindowHandle { get { return _parentWindowHandle; } set { _parentWindowHandle = value; } } public string PopupWindowHandle { get { return _popupWindowHandle; } set { _popupWindowHandle = value; } } #endregion } 

는 내 프로그램에서 나는이 작업을 수행. –

+4

코드 또는 스크린 샷을 표시하십시오. "팝업 창"으로, 일부는 실제 브라우저 창을 의미하고, 일부는 iframe 팝업, 일부는 HTML div 팝업, 일부는 평균 알림을 의미합니다. 어느 쪽 얘기하고 있니? –

+0

'driver.switchTo(). alert(). accept();'를 사용 했습니까? – Sankumarsingh

답변

1

팝업으로 전환 할 때 창 핸들을 제공해야만 할 일을 제어 할 수 있습니다. 이 클래스를 사용하면 앞뒤로 쉽게 전환 할 수 있습니다.

이 C#으로이다 :

WindowManager windowManager = new WindowManager(); 
windowManager.ParentWindowHandle = driver.CurrentWindowHandle; 
//do stuff that opens the new window 
//immediately switch focus to the popup so webdriver can work with the page 
windowManager.SwitchWindowFocusToPopup(driver, "popup window title"); 

//do stuff with the popup 

//close the popup 
driver.Close(); 

//set the webdriver window back to the original parent window 
driver.SwitchTo().Window(windowManager.ParentWindowHandle);` 
관련 문제