SRT 웹사이트에 접속하면 아래와 같이 popup 창이 뜨네요
팝업창을 알아서 처리해주는 방법에 대해서 알아볼께요
간단한 파이썬 코드를 작성해보아요
팝업창이 모두 떴는지를 확인해야겠네요
자바스크립트를 사용해볼께요
def document_complete(driver):
return driver.execute_script("return document.readyState") == "complete"
남겨둘 메인창이 어떤건지 알려줘야겠죠
main_window_handle = driver.current_window_handle
알아서 기다릴리가 없어요
로딩이 완료되었는지 (document_complete) 60초 동안 기다리라고 해줘야겠네요
WebDriverWait(driver, 60).until(document_complete)
메인이 아니면 팝업이겠거니 알아서 이해할리가 없어요
하나씩 알려줘야합니다
handles_without_main = [handle for handle in driver.window_handles if handle != main_window_handle]
모든 팝업을 닫아줍니다
for handle in handles_without_main:
driver.switch_to.window(handle)
driver.close()
다시 메인으로 돌아와야 작업을 이어갈 수 있겠네요
driver.switch_to.window(main_window_handle)
전체코드는 이렇게 생겼어요
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
def document_complete(driver):
return driver.execute_script("return document.readyState") == "complete"
option = Options()
# option.add_argument('--headless')
option.add_argument('--disable-gpu')
option.add_argument('--window-size=1920,1080')
option.add_argument('--start-maximized')
service = Service()
driver = webdriver.Chrome(service=service, options=option)
driver.get('https://etk.srail.kr/main.do')
main_window_handle = driver.current_window_handle
WebDriverWait(driver, 60).until(document_complete)
handles_without_main = [handle for handle in driver.window_handles if handle != main_window_handle]
for handle in handles_without_main:
driver.switch_to.window(handle)
driver.close()
driver.switch_to.window(main_window_handle)
오늘은 selenium으로 팝업을 닫아봤습니다
728x90
'플그래밍 > 파이써언' 카테고리의 다른 글
[파이썬] SQLite3로 데이터베이스 이해하기: SQL 기본 튜토리얼 (0) | 2023.08.10 |
---|---|
[파이썬 & 크롤링] 쿠팡 상품 리뷰 추출 자료 무료 나눔 (17) | 2023.08.09 |
[파이썬 & 크롤링] Selenium - iframe 내부 접근 법 (0) | 2023.08.04 |
[파이썬 & 크롤링] Selenium "Select" - 드롭다운 옵션 추출 법 (0) | 2023.08.04 |
[파이썬 & 크롤링] Selenium "Select" - 드롭다운 옵션 선택 법 (1) | 2023.08.04 |