소개
Selenium을 사용하여 웹 자동화를 진행하다 보면 'UnexpectedAlertPresentException' 오류에 마주칠 수 있습니다. 이 오류는 알림창이 표시되어 스크립트가 멈췄을 때 발생합니다. 웹 페이지에서 사용자에게 경고, 확인 또는 프롬프트 알림이 나타날 경우, Selenium은 어떤 작업을 진행하기 전에 해당 알림을 처리해야 합니다. 이 블로그 포스트에서는 이 오류의 원인과 해결 방법을 함께 살펴보겠습니다.
에러 발생 예시 코드
먼저, 'UnexpectedAlertPresentException' 오류가 발생할 수 있는 간단한 예시 코드를 확인해 보겠습니다.
from selenium import webdriver
from selenium.common.exceptions import UnexpectedAlertPresentException
driver = webdriver.Chrome()
driver.get('https://example.com') # 가상의 URL 사용
try:
# 알림 확인이 필요한 코드 실행
driver.find_element_by_id('trigger-alert').click()
except UnexpectedAlertPresentException as e:
print(f"알림창이 나타났습니다: {e}")
finally:
driver.quit()
에러 해결 방법
1. 알림 창을 수동으로 처리하기
알림 창이 나타날 경우, 먼저 확인 및 확인 버튼을 클릭하기 전에 알림을 처리하는 것이 중요합니다. 이를 통해 스크립트를 원활하게 이어갈 수 있습니다.
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
driver = webdriver.Chrome()
driver.get('https://example.com')
try:
driver.find_element_by_id('trigger-alert').click()
# 알림 창이 보일 때까지 대기
Alert(driver).accept() # 확인 버튼 클릭
except UnexpectedAlertPresentException:
Alert(driver).accept() # 알림 처리
finally:
driver.quit()
2. 알림 처리 전 대기 시간 추가하기
때로는 코드에서 알림이 발생하기 전에 너무 빨리 실행되어 'UnexpectedAlertPresentException' 오류가 발생할 수 있습니다. 이 경우에는 잠시 기다려서 알림을 적절히 처리할 수 있게 해주는 것이 좋습니다.
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
import time
driver = webdriver.Chrome()
driver.get('https://example.com')
try:
driver.find_element_by_id('trigger-alert').click()
time.sleep(2) # 알림이 나타날 때까지 대기
Alert(driver).accept() # 확인 버튼 클릭
except UnexpectedAlertPresentException:
Alert(driver).accept() # 알림 처리
finally:
driver.quit()
마무리
이번 블로그 포스트에서는 Selenium의 'UnexpectedAlertPresentException' 오류에 대한 이해와 해결 방법을 알아보았습니다. 알림창을 적절히 처리하거나, 대기 시간을 조정하는 방법을 통해 이 문제를 해결할 수 있습니다. 항상 코드 실행 이전에 알림 처리를 생각하고, 자동화 스크립트의 흐름을 지체하지 않도록 관리해야 합니다. Selenium을 통한 웹 자동화는 유익한 도구임을 잊지 마세요!
'Python > Selenium' 카테고리의 다른 글
Selenium find_elements로 다수의 요소 찾기 (0) | 2025.01.09 |
---|---|
Selenium.drag_and_drop으로 드래그 앤 드롭 구현하기 (0) | 2025.01.09 |
Selenium.get_css_value로 CSS 속성 가져오기 (1) | 2025.01.08 |
Selenium TimeoutException 오류 해결하기 (0) | 2025.01.08 |
Selenium StaleElementReferenceException 오류 해결하기 (0) | 2025.01.08 |