Selenium + Python:如何在加载某个元素时停止页面加载?

时间:2017-06-12 15:45:42

标签: python selenium

当页面使用AJAX时,可以使用隐式和显式等待,但是我想在加载足够的元素时停止由driver.get()引起的加载。是否可以这样做是因为driver.get()调用仅在页面完成加载时返回。

1 个答案:

答案 0 :(得分:21)

是的,可以将pageLoadStrategy功能设置为none。然后等待元素出现并调用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();")