업무용 소스 예제
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
반응형