2019-02-24

Selenium + Python: 특정 엘리먼트가 로드되고 나서 페이지 로딩을 멈추는 방법

0. 출처

원본 : https://stackoverflow.com/questions/44503576/selenium-python-how-to-stop-page-loading-when-certain-element-gets-loaded
아카이브 : https://web.archive.org/web/20190224122739/https://stackoverflow.com/questions/44503576/selenium-python-how-to-stop-page-loading-when-certain-element-gets-loaded



1. 질문

접속하려는 페이지가 AJAX를 사용할 때 implicit waits나 explicit waits를 사용할 수 있다. 하지만 driver.get()을 사용해 로딩하는 중간에, 충분한 엘리먼트를 얻었을 경우엔 해당 로딩을 중단시키고 싶다. driver.get()은 오직 페이지 로딩이 끝났을 때에만 객체를 반환하다보니 이게 가능할지가 궁금하다.



2. 대답

된다. 'pageLoadStrategygy'의 설정을 사용하면 가능하다. 그리고 나서 해당 엘리먼트가 존재하는 것이 확인되면 'window.stop()'을 호출해 로딩을 멈추게 만든다.



from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"

driver = webdriver.Chrome(desired_capabilities=capa)
wait = WebDriverWait(driver, 20)

driver.get('http://stackoverflow.com/')

wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#h-top-questions')))

driver.execute_script("window.stop();")



일단 import하는 것이 많아보인다.

댓글 없음:

댓글 쓰기