웹 스크래핑을 하다보면 사이트에 따라 아래와 같이 여러개의 팝업창이 뜨는 경우가 있는데요.
![[파이썬 셀레니움 기초] 팝업창 닫는 방법 팝업창](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이때 팝업창들을 닫기 위해서는 어떻게 해야 할까요?
1) url접속 코드 작성
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
url = "http://www.riss.kr"
driver.get(url)
time.sleep(2)
위와 같이 url에 접속 하는 코드를 먼저 작성 해줍니다.
(혹시 Service를 이용해 웹드라이브를 설정한 부분이 낯선분은 해당 포스팅을 참고하기 바랍니다.)
2) driver.window_handles를 이용하여 현재 떠있는 창 확인
![[파이썬 셀레니움 기초] 팝업창 닫는 방법 - undefined - undefined - 2) driver.window_handles를 이용하여 현재 떠있는 창 확인 window_handles확인](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
driver.window_handles를 이용하면 현재 떠 있는 창을 확인할 수 있습니다.
output:
![[파이썬 셀레니움 기초] 팝업창 닫는 방법 - undefined - undefined - 2) driver.window_handles를 이용하여 현재 떠있는 창 확인 [파이썬 셀레니움 기초] 팝업창 닫는 방법 - undefined - undefined - 2) driver.window_handles를 이용하여 현재 떠있는 창 확인](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
output을 확인해보면 뭔지는 모르겠으나 리스트에 3개 값이 들어 가있는 것을 알 수 있습니다.
이는 현재 브라우저에 3개의 창이 활성화 되어있다는 의미인데요.
여기서 알아야할건 리스트 첫번째 값이 팝업창이 아닌 메인 윈도우 창이라는 것입니다.
그렇다면 메인 윈도우창을 제외한 다른 팝업창들을 어떻게 닫을 수 있을까요?
3) 팝업창 종료
![[파이썬 셀레니움 기초] 팝업창 닫는 방법 - undefined - undefined - 3) 팝업창 종료 팝업창닫기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
위 코드와 같이 for loop를 돌면서 리스트의 첫번째 값, 즉 메인 윈도우창이 아닌 경우를 걸러냅니다.
그러면 팝업 창들만 걸러지겠죠.
여기서 그 팝업창들을 제어하기위해서는 switch_to.window()함수를 이용합니다.
그렇게 되면 셀레니움이 해당 창을 제어할 수 있게 되고, close() 함수를 통해 각각의 창들을 닫을 수 있습니다.
이 행위를 for loop를 돌면서 반복하는 거죠.
팝업창들을 모두 닫은 후에는 다시 메인창에서 크롤링 작업해야 함으로 swtich_to.window()함수를 메인창에 다시 적용시켜줍니다.
![[파이썬 셀레니움 기초] 팝업창 닫는 방법 - undefined - undefined - 3) 팝업창 종료 [파이썬 셀레니움 기초] 팝업창 닫는 방법 - undefined - undefined - 3) 팝업창 종료](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
output:
![[파이썬 셀레니움 기초] 팝업창 닫는 방법 - undefined - undefined - 3) 팝업창 종료 정상종료](https://blog.kakaocdn.net/dn/bly7Ah/btrMI4IERlH/MB0gUCJaEfrWzvfQ6eROl1/img.webp)
팝업창들만 정상 종료 되는것을 확인할 수 있습니다.
'파이썬 > 크롤링' 카테고리의 다른 글
[셀레니움] 크롬드라이버 자동 업데이트 방법 2가지 (0) | 2023.02.06 |
---|---|
[셀레니움] 구글 로그인 성공하기(with undetected-chromedriver) (0) | 2023.02.06 |
[크롤링 기초] svg 태그 찾기 (with xpath 셀레니움) (1) | 2022.04.19 |
[셀레니움 기초] 네이버 쇼핑 크롤링 중 차단?(headless 사용시 주의사항) (0) | 2022.04.07 |
[셀레니움 기초] StaleElementReferenceException 오류 해결 (0) | 2022.04.07 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.