반응형
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이 발생한 경우 팝업 창을 확인하고 적절한 조치를 취하여 예외를 처리합니다. 팝업 창을 확인하지 않고 다른 동작을 시도하지 않도록 주의하며, 알림이나 경고창 등이 뜨는 경우 적절한 처리를 추가해야 합니다.
반응형
'Python > Selenium' 카테고리의 다른 글
파이썬 NoAlertPresentException 오류 해결하기 (0) | 2023.08.23 |
---|---|
파이썬 Selenium ElementNotSelectableException 오류 해결하기 (0) | 2023.08.21 |
파이썬 Selenium NoSuchFrameException 오류 해결하기 (0) | 2023.08.19 |
파이썬 Selenium NoSuchWindowException 오류 (0) | 2023.08.18 |
파이썬 Selenium InvalidSelectorException 오류 (0) | 2023.08.17 |