如何加载页面直到找到特定元素 selenium python

How to load page until specific element found selenium python

有没有办法在网页中的特定元素加载时设置超时

注意:我说的是使用driver.get()方法加载网页

例如,我尝试将页面加载超时设置为 10 秒,并检查元素是否存在,但如果不存在,我将不得不从头加载它。

编辑:

明确表示不想加载满url

我希望 driver.get() 加载 url 直到找到元素,然后停止从 url

加载更多

在您的示例中,您只使用了 driver.get() 方法,该方法将加载完整 url 然后执行下一个命令。一种方法是使用 driver.set_page_load_timeout()

编辑:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

op = Options()
op.page_load_strategy = 'none'
driver = webdriver.Chrome(options=op)
driver.get(URL)
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located(
        (By.XPATH, '//div')))
driver.execute_script("window.stop();")

PS。如果您 post 没有一行代码的模糊问题,您将不断得到 off-topic 个答案。

webdriver 默认情况下将等待页面加载。它不会等待 frames 内的加载或 ajax 请求。这意味着当您使用 .get('url') 时,您的 browserwait 直到页面完全加载,然后转到代码中的下一个命令。但是,当您发布 ajax 请求时,webdriver 不会等待,您有责任 wait 为页面或页面的一部分加载适当的时间;所以有一个名为 expected_conditions.

的模块

当找不到元素时会出现错误,因此您可以使用“尝试”直到找到元素:

while True:
    try:
        element = driver.find_element(by=By.<Your Choice>, value=<Name or Xpath or ...>)
    except:
        time.sleep(1)

它会尝试直到找到元素