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

设置page_load_strategy为none时WebDriverWait失效问题求助

问题解决:Selenium设置page_load_strategy为none后等待readyState不生效

问题根源

你当前的等待代码存在一个核心问题:lambda表达式里直接调用外部的web对象执行脚本,但WebDriverWait每次检查条件时会传入当前的WebDriver实例作为lambda参数,混用外部对象会导致上下文不一致,无法正确捕捉页面状态的变化。另外,当page_load_strategy设为none时,浏览器会立刻返回控制权,此时页面可能还处于初始化阶段,document对象甚至可能未创建,直接检查readyState会得到无意义的结果。

修正后的等待代码

把lambda里的外部web替换为传入的参数,确保每次检查都使用当前的WebDriver上下文:

WebDriverWait(web, seconds).until(
    lambda driver: driver.execute_script("return document.readyState") == "complete"
)

更可靠的替代方案

依赖document.readyState并不总能精准反映页面实际内容的加载状态,建议改为等待页面中某个关键业务元素出现,这更贴合实际需求:

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

WebDriverWait(web, seconds).until(
    EC.presence_of_element_located((By.ID, "你的关键元素ID"))
)

额外注意事项

  • 使用page_load_strategy="none"时,建议禁用Chrome缓存,避免旧页面状态干扰判断:
options.add_argument("--disable-cache")
  • 若页面存在大量异步加载内容,可在readyState变为complete后,再额外等待一段时间或检查异步元素的加载状态。

内容的提问来源于stack exchange,提问作者Ibrahim Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:25:27