You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Python:用WebDriverWait替代time.sleep的重构及原因

用WebDriverWait重构Selenium代码及等待的必要性

一、重构后的代码

首先需要导入WebDriverWait、预期条件模块以及元素定位工具,然后把固定等待的time.sleep替换为动态等待逻辑。以下是完整重构代码:

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

driver = webdriver.Chrome(executable_path="...")

try:
    driver.get(URI)
    # 等待页面核心元素加载完成,这里以id为main-content的元素出现为例
    # 超时时间设为10秒,期间会自动轮询检查条件是否满足
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "main-content"))
    )
    
    respond = driver.page_source
    print(respond)

except Exception as _ex:
    print(_ex)
finally:
    driver.close()
    driver.quit()

如果不需要针对特定元素,也可以用页面标题非空来简单判断页面加载状态,替换等待部分即可:

WebDriverWait(driver, 10).until(
    EC.title_is_not("")
)

二、为什么要替换time.sleep用WebDriverWait

  • 不浪费时间:time.sleep(3)是硬等固定时长,哪怕页面1秒加载完成也要耗够3秒;WebDriverWait是动态等待,一旦条件满足(比如目标元素出现)就立刻执行后续代码,效率更高。
  • 适配不同场景:网络快慢、设备性能都会影响页面加载速度,固定等待时间要么在慢网下不够(导致后续代码找不到元素报错),要么在快网下做无用等待。WebDriverWait会在设定的超时时间内反复检查条件,适配性更强。
  • 应对动态内容:现在很多页面用JavaScript动态渲染内容,表面上页面加载完成,但实际需要的内容还在加载,time.sleep很难卡准这个时间点,而WebDriverWait可以针对你需要的具体元素等待,确保拿到完整的页面源码。

内容的提问来源于stack exchange,提问作者Alan Anderson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:55:14