업무용 소스 예제

C# 셀레늄 : 사이트 팝업창 접근 과 처리 방법

안요사님 2023. 5. 12. 15:57
728x90
반응형

팝업창이 Alert 창인 경우 : 

try
{
    IAlert alert = Driver.SwitchTo().Alert();
    alert.Accept();
}
catch (NoAlertPresentException)
{
    // 팝업창이 Alert 창이 아닌 경우에는 NoAlertPresentException 예외가 발생합니다.
    // 이 경우 아무런 처리를 하지 않습니다.
}

 

팝업창이 Alert 창이 아닌 경우 에는 보통 HTML Dialog 창으로 인식됩니다. 따라서 해당 창을 다루기 위해서는 Selenium의 SwitchTo().Window() 메서드를 사용해야 합니다.

다음은 HTML Dialog 창을 다루는 예제 코드입니다.

// 현재 창의 핸들을 저장합니다.
string parentHandle = Driver.CurrentWindowHandle;

// 모든 창의 핸들을 가져옵니다.
IEnumerable<string> allHandles = Driver.WindowHandles;

// 부모 창을 제외한 다른 창을 찾습니다.
string dialogHandle = allHandles.FirstOrDefault(handle => handle != parentHandle);

if (dialogHandle != null)
{
    // HTML Dialog 창으로 이동합니다.
    Driver.SwitchTo().Window(dialogHandle);

    // 확인 버튼을 클릭합니다.
    IWebElement confirmButton = Driver.FindElement(By.Id("dialog-confirm"));
    confirmButton.Click();

    // 부모 창으로 이동합니다.
    Driver.SwitchTo().Window(parentHandle);
}

 

위 코드에서는 먼저 현재 창의 핸들을 저장하고, 모든 창의 핸들을 가져와 부모 창을 제외한 다른 창을 찾습니다. 그리고 HTML Dialog 창으로 이동한 후 확인 버튼을 클릭하고, 다시 부모 창으로 이동합니다.

이 코드를 적용하면 원하는 동작을 수행할 수 있을 것입니다.

 

728x90
반응형