Selenium alert 처리 방법

2023. 8. 25. 17:46·python/selenium
728x90

안녕하세요.

 

오늘은 selenium alert 처리 방법에 대해서 알아보도록 하겠습니다.

 

크롤링을 하다보면 alert이 뜨는 바람에 원하는 로직이 정상적으로 돌아가지 않는 상황을 마주하곤 합니다.

이럴때 어떻게 처리할 수 있을까요?

 

총 2가지 방법에 대해서 말씀드리겠습니다.

try:
    result = browser.switch_to.alert
    result.accept() # alert 창 확인 클릭
    alert.dismiss() # alert 창 취소 클릭

except:
    # alert 없을 시 처리 로직 작성
    pass

첫 번째 방법은 selenium 안에 있는 switch_to.alert를 활용하는 방법 입니다.

내가 어떠한 페이지를 클릭 했을 때 alert이 뜬 경우 위와 같은 방법으로 처리할 수 있습니다.

또 다른 방법은 pyautogui를 활용하는 방법입니다.

import pyautogui

try:
    browser.get("https://alert.com") # alert가 있는 페이지로 이동 했다고 가정
    pyautogui.hotkey('enter') # 보고 있는 페이지 enter를 진행
except:
    # alert 없을 시 처리 로직 작성
    pass

pyautogui의 경우에는 내가 키보드를 눌러서 처리 하듯 진행하는 방법입니다.

말 그대로 페이지 접근 후 내가 직접 키보드의 enter를 클릭하 듯이 동작합니다.

단점 있다면 alret가 있는 화면으로 활성화를 시켜놔야지만 가능하다는 점 입니다.

그렇기에 2번째 방법 보다는 1번째 방법으로 진행하시는 것을 추천 드립니다!

만일 페이지이동을 했는데 새창으로 페이지가 열렸다면

try:
    browser.switch_to.window(browser.window_handles[1])
    time.sleep(1)
    result = browser.switch_to.alert
    result.accept()

    time.sleep(2)
except:
    pass

위에 있는 코드 처럼 browser.switch\_to.window(browser.window\_handles\[1\]) 이동을 해서 진행해야합니다!

그리고 페이지 이동 후 제가 time.sleep(1) 를 걸어 주었는데 또 이 방법 보다는

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

try:
    browser.switch_to.window(browser.window_handles[1])

     WebDriverWait(browser, 3).until(EC.alert_is_present()) # 경고 창이 있는지를 체크

    result = browser.switch_to.alert
    result.accept()

    time.sleep(2)
except:
    pass

WebDriverWait을 활용하시는 걸 추천 드리겠습니다.

개인적으로 Crawling은 무조건 안정성을 가장 먼저 추구해야한다고 생각하기 때문에 제가 이전에 포스팅한

 

 

크롤링 자주 나는 오류

Crawling이란? 페이지 데이터를 추출하는 Scraping과 개념과 달리 페이지에 있는 링크를 따라 새 페이지로 연결되는 것과 새 페이지의 링크를 계속해서 찾아 다른 새 페이지로 연결되는 것을 의미 합

balang.tistory.com

이 포스팅을 보시면서 여러분들의 Crawling Code를 더 안정적으로 구현하시기를 바라겠습니다.

 

감사합니다.

728x90
반응형

'python > selenium' 카테고리의 다른 글

Playwright vs Selenium Grid 비교 리포트  (0) 2025.04.10
selenium 로봇 피하는 방법  (0) 2025.03.25
크롤링 자주 나는 오류  (1) 2023.08.24
'python/selenium' 카테고리의 다른 글
  • Playwright vs Selenium Grid 비교 리포트
  • selenium 로봇 피하는 방법
  • 크롤링 자주 나는 오류
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (131) N
      • python (36) N
        • selenium (4)
        • algorithm (3)
        • Django (6) N
        • Pandas | Numpy (19)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (3)
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
Selenium alert 처리 방법
상단으로

티스토리툴바