Python+Selenium报chrome not reachable如何捕获错误并重启Chrome?
Selenium Chrome不可达错误捕获与自动重启方案
核心实现逻辑
- 捕获Selenium的
WebDriverException异常,判断错误信息中是否包含chrome not reachable标识 - 封装独立的Chrome Driver初始化函数,统一管理启动配置,方便重启时复用
- 故障触发时先清理旧Driver的残留进程,再重新初始化实例恢复业务执行
完整代码示例
from selenium import webdriver from selenium.common.exceptions import WebDriverException import time def init_chrome_driver(): """Chrome Driver初始化函数,可自定义你的启动配置""" chrome_options = webdriver.ChromeOptions() # 下方替换为你原本的Chrome启动参数,比如无头模式、禁用沙箱等 # chrome_options.add_argument("--headless=new") # chrome_options.add_argument("--no-sandbox") # chrome_options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=chrome_options) return driver # 首次初始化Driver driver = init_chrome_driver() # 可配置最大重启次数,避免无限重启 max_retry_count = 3 current_retry = 0 # 你的业务逻辑循环 while current_retry < max_retry_count: try: # 这里替换为你原本的Selenium业务操作代码 driver.get("https://example.com") print("页面标题:", driver.title) time.sleep(5) # 业务执行成功重置重试计数 current_retry = 0 except WebDriverException as e: error_msg = str(e) if "chrome not reachable" in error_msg: current_retry += 1 print(f"检测到Chrome不可达,第{current_retry}次尝试重启...") # 清理旧进程 try: driver.quit() except Exception: pass # 重启Driver driver = init_chrome_driver() print("Chrome重启完成,恢复业务执行") else: # 非目标异常按原有逻辑处理,可自行调整为记录日志 raise e print("超过最大重启次数,脚本终止")
优化建议
- 若需要保留登录态、缓存等会话数据,可在初始化配置中添加
--user-data-dir参数指定本地用户数据目录,重启后无需重复登录 - 生产环境可补充日志记录,留存每次报错的上下文操作、时间等信息,方便后续定位Chrome偶发闪退的根本原因,常见诱因包括内存不足、Chrome自动更新后与Driver版本不匹配、系统资源被抢占等
内容的提问来源于stack exchange,提问作者Cristian Avendaño
相关产品推荐
相关产品推荐

