Python undetected_chromedriver循环启动报Chrome不可达问题如何解决
问题修复方案
核心错误原因
- 驱动实例初始化放在循环外部,第一次循环执行
driver.quit()后实例已被销毁,后续循环调用已销毁的实例方法必然触发连接失败错误 - 计数语法错误:代码中
count =+ 1等价于将count固定赋值为1,会造成无限循环,正确写法为count += 1
修复后可运行代码
# 依赖安装:pip install undetected-chromedriver import undetected_chromedriver.v2 as uc import time import os options = uc.ChromeOptions() options.add_argument('--no-first-run') # 可选配置:无头模式,不需要可视化界面时可以开启 # options.add_argument('--headless=new') length = 8 count = 0 while count < length: print(f"当前是第 {count} 次循环") time.sleep(2) # 每次循环都重新初始化驱动实例 driver = uc.Chrome(options=options) with driver: print("进入循环逻辑") driver.get("https://google.com") time.sleep(5) print("循环逻辑执行完成,销毁驱动") driver.quit() count += 1 # Linux环境下额外清理残留进程,避免驱动/Chrome进程残余占用端口 os.system("ps -ef | grep chrome | grep -v grep | awk '{print $2}' | xargs kill -9 2>/dev/null")
额外优化建议
- 如果凭证校验不需要每次都清空浏览器上下文,也可以选择只初始化1次驱动实例,循环内只调用
driver.delete_all_cookies()清空缓存即可,不需要每次销毁重建驱动,运行效率会更高 - 驱动销毁后可以加1~2秒的等待时间,给系统释放端口的缓冲,避免端口占用冲突
- 如果是多账号批量测试,建议添加错误捕获逻辑,单次账号校验失败时打印错误信息后继续执行下一个账号,不会中断整批任务
内容的提问来源于stack exchange,提问作者LessClicks
相关产品推荐
相关产品推荐

