如何正确使用driver.quit()实现webdriver正常重启
Selenium webdriver优雅关闭及重启报错解决方案
报错根因
- 报错本质是旧driver实例销毁后,代码仍尝试向已经关闭的驱动端口发送请求
- 你代码中调用的
driver.stop_client()是冗余API,和driver.quit()同时调用可能会干扰资源释放逻辑,导致驱动进程残留或者端口未正常释放
修复方案
1. 调整关闭阶段代码
移除冗余的stop_client()调用,关闭后显式清空driver变量,避免误操作旧实例:
if loopNumber == 15: timeStop = timeit.default_timer() execution_time = timeStop - timeStart print("Program Executed in "+str(execution_time/60)+" Minutes") # 只保留quit方法即可,不需要调用stop_client driver.quit() # 显式标记旧实例已销毁,避免后续逻辑误调用 driver = None time.sleep(600)
2. 重启时重新初始化driver
等待600秒后,必须重新实例化driver对象,完全复用之前的driver初始化逻辑即可,不要尝试复用旧的driver实例:
# 重启示例(对应你原有初始化driver的逻辑原样重写一遍即可) from selenium.webdriver import Chrome from selenium.webdriver.chrome.options import Options # 原有options配置原样保留 chrome_options = Options() # chrome_options.add_argument('--headless') 你之前加的启动参数都原样编写 driver = Chrome(options=chrome_options)
3. 偶现端口占用的兜底处理
如果还是偶尔出现端口被占用、无法启动驱动的问题,可以在调用quit后增加强制清理残留进程的逻辑:
import os # Windows系统清理残留驱动和浏览器进程,其他系统替换为对应的杀进程命令即可 os.system("taskkill /f /im chromedriver.exe 2>nul") os.system("taskkill /f /im chrome.exe 2>nul")
内容的提问来源于stack exchange,提问作者Emoyaki
相关产品推荐
相关产品推荐

