如何在网页加载超过X秒时强制执行driver.refresh()
页面未在指定时间内加载完成时强制刷新的实现方案
原代码仅在超时错误发生后被动处理刷新,要实现主动设定加载超时阈值并强制刷新,可以通过给WebDriver设置页面加载超时时间,配合异常捕获来实现,具体步骤如下:
核心修改点
- 给driver设置页面加载超时时间(X秒),超过该时间未完成加载则抛出超时异常
- 捕获超时异常后执行页面刷新操作
- 注意URL必须带上
https://或http://协议头,否则驱动无法正确发起请求
修改后的完整代码示例
from selenium import webdriver from selenium.common.exceptions import TimeoutException from bs4 import BeautifulSoup as bs # 初始化浏览器驱动(这里以Chrome为例,根据你的浏览器调整) driver = webdriver.Chrome() # 设定页面加载超时时间,X替换为你需要的秒数,比如10秒 X = 10 driver.set_page_load_timeout(X) try: # 访问目标页面,必须带协议头 driver.get('https://www.google.com') # 获取页面源码并解析 content = driver.page_source soup = bs(content, 'html.parser') # 这里可以添加你的后续业务逻辑 except TimeoutException: # 超时后执行刷新 print(f"页面未在{X}秒内加载完成,正在刷新页面...") driver.refresh() except AttributeError: # 捕获原代码中的属性错误 print("页面元素解析出现属性错误")
补充说明
- 如果需要多次尝试刷新,可以在
TimeoutException的处理块中添加循环逻辑,比如限制最多刷新3次 - 不同浏览器驱动的超时异常类型统一为
TimeoutException,需要从selenium.common.exceptions中导入
内容的提问来源于stack exchange,提问作者fuzenpy
相关产品推荐
相关产品推荐

