Selenium python: как остановить загрузку страницы при загрузке определенного элемента?

неявные и явные ожидания могут использоваться, когда страница использует AJAX, но я хочу остановить загрузку, вызванную драйвером.get () при загрузке достаточного количества элементов. Возможно ли это сделать, потому что водитель.вызов get () возвращается только после завершения загрузки страницы.

1 ответов


Да, это возможно, установив 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();")