Selenium Alert 창에 대처하기

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

문제상황

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()

레퍼런스

좋은 웹페이지 즐겨찾기