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()
레퍼런스
- Live Your IT - [파이썬] Selenium alert 경고창 처리하기
- Tongchun - 로딩이 끝날때까지 기다리자 (Waits)
- Selenium - Alert
- Selenium with Python - Expected conditions Support
Author And Source
이 문제에 관하여(Selenium Alert 창에 대처하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zbooster/Selenium-Alert-창에-대처하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)