본문 바로가기
Python/Selenium

파이썬 NoAlertPresentException 오류 해결하기

by PySun 2023. 8. 23.
반응형

NoAlertPresentException은 알림(alert) 창이나 경고창이 없는 상태에서 알림 창을 확인하거나 조작하려고 할 때 발생하는 예외입니다. 예시 코드와 해결 방법에 대해 설명하겠습니다.

예시 코드:

아래 예시 코드에서는 NoAlertPresentException이 발생할 수 있는 상황을 보여줍니다. 알림 창이 없는 상태에서 알림 창을 확인하려는 시나리오를 시뮬레이션한 것입니다.

from selenium import webdriver
from selenium.common.exceptions import NoAlertPresentException

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

    # 알림 창 확인 시도
    driver.get('https://www.example.com')
    alert = driver.switch_to.alert

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

해결 방법:

NoAlertPresentException이 발생할 때 다음과 같은 방법으로 처리할 수 있습니다.

알림의 존재 여부 확인:

알림 창이 나타날 때만 해당 알림을 확인하거나 조작하도록 조건문을 사용합니다.

from selenium.common.exceptions import NoAlertPresentException

# 알림의 존재 여부 확인 예시
try:
    alert = driver.switch_to.alert
except NoAlertPresentException:
    print("알림 창이 없습니다.")

기다리기:

알림 창이 나타날 때까지 기다린 후 해당 알림을 확인하거나 조작합니다. WebDriverWait와 expected_conditions를 사용하여 알림이 나타날 때까지 대기할 수 있습니다.

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

# 알림이 나타날 때까지 기다리기 예시
wait = WebDriverWait(driver, 10)
alert = wait.until(EC.alert_is_present())
alert.accept()  # 알림 창 확인

알림 창의 존재 여부를 확인하고, 존재할 경우에만 해당 알림을 처리하도록 조치합니다. 또는 기다리기 방법을 사용하여 알림이 나타날 때까지 기다린 후에 처리하도록 합니다. NoAlertPresentException은 알림 창이 없는 경우에 발생하므로, 알림이 있는지 먼저 확인한 후에 적절한 조치를 취하도록 합니다.

반응형