본문 바로가기
Python/Selenium

파이썬 Selenium UnhandledAlertException 오류 해결하기

by PySun 2023. 8. 20.
반응형

UnhandledAlertException은 처리되지 않은 팝업(alert) 창이 있을 때 발생하는 예외입니다. 브라우저 내부의 알림이나 경고창을 확인하지 않고 다른 동작을 수행하려고 할 때 발생할 수 있습니다. 이러한 상황에서 예외가 발생하며, 예상치 못한 팝업 창이 있을 때 적절히 처리해야 합니다. 예시 코드와 해결 방법에 대해 설명하겠습니다.

예시 코드:

아래 예시 코드에서는 UnhandledAlertException이 발생할 수 있는 상황을 보여줍니다. 예상치 못한 팝업 창이 뜨는 시나리오를 시뮬레이션한 것입니다.

from selenium import webdriver

try:
    driver = webdriver.Chrome('path/to/chromedriver')

    # 예상치 못한 팝업 창을 띄우는 버튼 클릭
    driver.get('https://www.example.com')
    driver.find_element_by_id('popup_button').click()

    # 팝업 창을 확인하지 않고 다른 동작 수행 시도
    driver.get('https://www.google.com')

except UnhandledAlertException as e:
    print("UnhandledAlertException이 발생했습니다:", str(e))
finally:
    # 브라우저 종료
    driver.quit()

해결 방법:

UnhandledAlertException이 발생할 때 다음과 같은 방법으로 해결할 수 있습니다.

Alert 다루기:

팝업 창을 확인하고 수락하거나 닫는 등의 조작을 수행해야 합니다. driver.switch_to.alert 메서드를 사용하여 알림 창으로 전환한 후, accept() 또는 dismiss() 메서드를 사용하여 팝업 창을 다룹니다.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# Alert 다루기 예시
wait = WebDriverWait(driver, 10)
alert = wait.until(EC.alert_is_present())
alert.accept()  # 팝업 창 수락

팝업 확인 후 처리:

팝업 창이 예상치 못한 경우 발생하므로, 해당 팝업에 대한 처리가 필요한지 먼저 확인합니다. 팝업 창이 나타난 후 적절한 조치를 취하고 다른 동작을 수행합니다.

# 팝업 확인 후 처리 예시
if EC.alert_is_present():
    alert = driver.switch_to.alert
    alert.accept()  # 팝업 창 수락
driver.get('https://www.google.com')  # 다른 동작 수행

UnhandledAlertException이 발생한 경우 팝업 창을 확인하고 적절한 조치를 취하여 예외를 처리합니다. 팝업 창을 확인하지 않고 다른 동작을 시도하지 않도록 주의하며, 알림이나 경고창 등이 뜨는 경우 적절한 처리를 추가해야 합니다.

반응형