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