解决提前数小时运行代码时Chrome驱动与浏览器断开连接问题
解决Chrome驱动长时间等待后断开连接的问题
直接用time.sleep()等待数小时会触发Chrome驱动的超时机制,导致驱动和浏览器断开连接。核心问题是长时间无交互让会话失效,解决思路是拆分等待时长,分阶段休眠,同时定期维持浏览器活跃。
修复后的代码
import datetime import time from selenium import webdriver # 初始化Chrome驱动(需提前配置好ChromeDriver路径) driver = webdriver.Chrome() def wait_until_midnight(): while True: current_now = datetime.datetime.now() # 设定目标时间为当天凌晨12点,如果当前时间已过则顺延到次日 target = current_now.replace(hour=0, minute=0, second=0, microsecond=0) if current_now >= target: target += datetime.timedelta(days=1) # 计算剩余等待秒数 remaining_sec = (target - current_now).total_seconds() # 剩余时间不足1分钟时,直接等待到目标时间 if remaining_sec <= 60: time.sleep(remaining_sec) break # 否则每次只休眠5分钟,避免长时间无交互 else: time.sleep(300) # 可选:刷新页面维持会话活跃,避免断开 try: driver.refresh() except Exception as e: print(f"维持连接时出错: {str(e)}") # 执行等待逻辑 wait_until_midnight() # 这里写凌晨12点要执行的业务代码 print("已到凌晨12点,开始执行任务!")
关键优化点
- 拆分休眠时长:避免单次休眠几小时,改用5分钟一次的短休眠,降低会话超时风险
- 维持会话活跃:每次短休眠后刷新页面(或做其他轻量操作),让Chrome驱动知道会话仍在使用
- 精准收尾:最后1分钟直接等待到目标时间,保证任务刚好在凌晨12点触发
内容的提问来源于stack exchange,提问作者피리네
相关产品推荐
相关产品推荐

