Chromedriver启动失败求助:DevToolsActivePort文件不存在等报错
针对你遇到的DevToolsActivePort file doesn't exist错误及后续的AttributeError,可以尝试以下几种可行的解决办法:
添加ChromeOptions核心启动参数
这类错误大多是Chrome无法正常获取调试端口或受系统安全限制导致的,添加以下参数可直接绕过常见限制:from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--no-sandbox") # 绕过操作系统安全沙箱限制 options.add_argument("--disable-dev-shm-usage") # 解决临时内存分区不足问题 options.add_argument("--remote-debugging-port=9222") # 强制指定远程调试端口 options.add_argument("--start-maximized") # 避免窗口初始化异常 driver = webdriver.Chrome(options=options)清理残留的Chrome进程
之前未完全退出的Chrome或ChromeDriver进程会占用端口资源,导致新实例无法启动。可以手动在任务管理器中结束所有chrome.exe和chromedriver.exe进程,或者用命令行强制清理:taskkill /F /IM chrome.exe /IM chromedriver.exe指定独立的Chrome用户数据目录
默认的用户数据目录可能存在损坏或权限问题,手动指定一个干净的目录:# 替换为你有权限读写的任意空目录路径 options.add_argument(r"--user-data-dir=C:\Temp\ChromeTestProfile")禁用扩展和弹窗拦截
第三方Chrome扩展可能干扰启动流程,添加参数禁用所有扩展:options.add_argument("--disable-extensions") options.add_argument("--disable-popup-blocking")修复
AttributeError异常
这个错误是因为ChromeDriver启动失败后,代码仍尝试调用driver.close()。需要在代码中增加判断,避免对未初始化的driver执行操作:try: driver = webdriver.Chrome(options=options) # 执行你的测试逻辑 except Exception as e: print(f"启动失败: {str(e)}") finally: # 仅当driver成功初始化时才执行退出操作 if 'driver' in locals() and driver is not None: try: driver.quit() except: pass再次确认版本完全匹配
虽然你使用了最新版本,但仍需确保Chrome版本(在浏览器中访问chrome://version/查看)与ChromeDriver版本完全一致(比如均为109.0.5414.xxx)。若webdriver-manager下载的版本有差异,可手动下载对应版本替换缓存中的文件。以管理员权限运行
Windows系统下,权限不足可能导致无法创建DevToolsActivePort文件。右键点击你的测试脚本或命令提示符,选择「以管理员身份运行」后重试。
内容的提问来源于stack exchange,提问作者Peter

