Python Selenium 4.12.0加载Edge用户数据时崩溃问题求助
解决Selenium 4.12.0加载Edge用户数据崩溃的问题
问题分析
报错DevToolsActivePort file doesn't exist的核心原因:
- 默认的
User Data根目录被正在运行的Edge实例占用,导致Selenium无法获取目录控制权 - Selenium 4.x对Chromium系浏览器的用户数据目录加载逻辑有调整,直接使用根目录会触发进程冲突
修复方案
1. 指定具体的用户配置子目录
不要直接指向User Data根目录,而是指向其中的具体配置文件夹(比如默认的Default,或自定义配置文件夹):
import os from selenium import webdriver from time import sleep option = webdriver.EdgeOptions() # 指向Default子目录而非User Data根目录 user_data_path = f"C:\\Users\\{os.environ.get('username')}\\AppData\\Local\\Microsoft\\Edge\\User Data\\Default" option.add_argument(f"user-data-dir={user_data_path}") browser = webdriver.Edge(options=option) browser.get("https://web.whatsapp.com") sleep(100) browser.quit()
2. 添加额外参数规避端口/权限冲突
如果指定子目录后仍报错,添加以下参数强制指定调试端口并禁用沙箱(部分环境需要):
option = webdriver.EdgeOptions() user_data_path = f"C:\\Users\\{os.environ.get('username')}\\AppData\\Local\\Microsoft\\Edge\\User Data\\Default" option.add_argument(f"user-data-dir={user_data_path}") # 添加端口与权限相关参数 option.add_argument("--remote-debugging-port=9222") option.add_argument("--no-sandbox") option.add_argument("--disable-dev-shm-usage") browser = webdriver.Edge(options=option)
3. 清理Edge后台进程
启动脚本前,关闭所有Edge窗口,通过任务管理器结束后台运行的msedge.exe进程,避免用户数据目录被占用。
关键说明
旧版Selenium允许直接使用User Data根目录,但Selenium 4.x配合新版EdgeDriver时,必须指向具体的用户配置子目录,否则会因进程冲突导致启动失败。
内容的提问来源于stack exchange,提问作者Sayed Reda
相关产品推荐
相关产品推荐

