Selenium Alert 창에 대처하기

SH.KIM·2022년 4월 9일
0

크롤링

목록 보기
2/2

과제를 진행하면서 맞닥드렸던 문제상황에 대한 대처방법을 공유하고자 한다.
(사실 과제를 수행하는데 필요없는 코드이고 애써 찾은것을 그냥 지우기 아까워서 여기다 쓰는거다)

문제상황

selenium으로 크롤링을 진행하다가 검색할 키워드를 검색창에 입력하고 잘 되는 것을 확인한 뒤 반복문을 이용하여 여러번 수행하던 차에 아래와 같은 창을 맞닥드리게 되었다.

Alert창이 발생했을 때, '확인' 버튼을 누르는 코드는 그리 어렵지 않았지만, Alert창이 발생 했는지 여부를 체크하는 것이 어려웠다. 공식문서를 찾아보니 expected_conditions에 alert_is_present() 함수가 있긴 했지만, 적절한 예제가 없었기에 바로 써먹을 수는 없었다.

해결방법

해결 방법은 생각보다 간단했다. try~except 문장를 사용해서 Alert창으로 이동을 시도하고 되면 창을 확인(accept)하고 안되면 pass하는 방법으로 처리했다.

try:
	result = driver.switch_to.alert()
    result.accept()
except:
	pass

expected_conditions

과제 제출 이후에 expected_conditions 모듈에 대해 확인해보니 위와 같은 상황에서는 아래 같은 방법으로 사용할 수 있을 같다. 하지만, 위의 try~except에 비해 좀 불완전해 보인다. (다른 방법이 생각나면 테스트해보고 업데이트 하겠다.)

import time
from selenium.webdriver.support import expected_conditions as EC

time.sleep(1)

if EC.alert_is_present():
	result = driver.switch_to.alert()
    result.accept()

레퍼런스

profile
다시 도약하려 노력해보자

0개의 댓글