Chrome配置文件启动失败:DevToolsActivePort文件不存在求助
Chrome + Selenium加载本地配置文件时出现DevToolsActivePort不存在错误
使用Chrome 137.0.7151.68(此前版本为135.0.7049.115)结合Selenium加载本地已有的Chrome配置文件,实现自动打开标签页及浏览(如YouTube)功能时,触发错误:chrome profile error: session not created: DevToolsActivePort file doesn't exist
报错堆栈信息
number_of_sites, driver = load_pages(options.local_IPaddress, options.sleep_time, options.result_dir, browser_obj, timestamp_g, options.premium) ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Documents\Chrometesting\browsers\browser_test.py", line 63, in load_pages driver = browser_obj.create() File "C:\Users\Documents\Chrometesting\browsers\browser.py", line 63, in create driver = webdriver.Chrome(options=self.options) File "C:\Users\Documents\Chrometesting\.venv\Lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in __init__ super().__init__( ~~~~~~~~~~~~~~~~^ browser_name=DesiredCapabilities.CHROME["browserName"], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... keep_alive=keep_alive, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\Documents\Chrometesting\.venv\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 66, in __init__ super().__init__(command_executor=executor, options=options) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Documents\Chrometesting\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 250, in __init__ self.start_session(capabilities) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "C:\Users\Documents\Chrometesting\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 342, in start_session response = self.execute(Command.NEW_SESSION, caps)["value"] ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Documents\Chrometesting\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 429, in execute self.error_handler.check_response(response) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ File "C:\Users\Documents\Chrometesting\.venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 232, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.SessionNotCreatedException: Message: session not created: DevToolsActivePort file doesn't exist Stacktrace: GetHandleVerifier [0x0x7ff68ee5fea5+79173] GetHandleVerifier [0x0x7ff68ee5ff00+79264] (No symbol) [0x0x7ff68ec19e5a] (No symbol) [0x0x7ff68ec5ca69] (No symbol) [0x0x7ff68ec565fe] (No symbol) [0x0x7ff68ec52b1d] (No symbol) [0x0x7ff68eca67de] (No symbol) [0x0x7ff68eca5f70] (No symbol) [0x0x7ff68ec98743] (No symbol) [0x0x7ff68ec614c1] (No symbol) [0x0x7ff68ec62253] GetHandleVerifier [0x0x7ff68f12a2dd+3004797] GetHandleVerifier [0x0x7ff68f12472d+2981325] GetHandleVerifier [0x0x7ff68f143380+3107360] GetHandleVerifier [0x0x7ff68ee7aa2e+188622] GetHandleVerifier [0x0x7ff68ee822bf+219487] GetHandleVerifier [0x0x7ff68ee68df4+115860] GetHandleVerifier [0x0x7ff68ee68fa9+116297] GetHandleVerifier [0x0x7ff68ee4f558+11256] BaseThreadInitThunk [0x0x7ff91ccb269d+29] RtlUserThreadStart [0x0x7ff91db8a9f8+40]
已尝试的解决方法
- 使用用户配置文件数据创建临时目录:但配置文件显示未验证登录,导致后续执行失败。
- 配置Chrome参数以访问用户配置文件:添加了
--no-sandbox、--disable-dev-shm-usage、--remote-debugging-port=9222参数。
获取配置文件的代码
if self.premium: base_path = "AppData\\Local\\Google\\Chrome\\User Data" home_directory = os.path.expanduser("~") user_data_directory = os.path.join(home_directory, base_path) user_data_directory = os.path.normpath(user_data_directory).replace(os.sep, '/') profile_dirs = [] profile_dir = None # Locate the last accessed Chrome Profile for entry in os.listdir(user_data_directory): if entry == "Default" or entry.startswith("Profile"): full_path = os.path.join(user_data_directory, entry) modified_time = os.path.getmtime(full_path) profile_dirs.append((modified_time, entry)) profile_dir = max(profile_dirs)[1]
解决方案
1. 确保目标配置文件未被其他Chrome实例占用
关闭所有正在运行的Chrome窗口,包括后台进程(通过任务管理器结束chrome.exe相关进程),避免配置文件被锁定导致Selenium无法读取。
2. 完善ChromeOptions参数配置
在创建ChromeOptions时,除已添加的参数外,需正确指定用户数据目录和配置文件目录,同时补充必要参数:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 指定用户数据目录 options.add_argument(f"--user-data-dir={user_data_directory}") # 指定目标配置文件目录(如Default或Profile 1) options.add_argument(f"--profile-directory={profile_dir}") # 补充解决DevToolsActivePort问题的参数 options.add_argument("--remote-debugging-port=9222") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-ipc-flooding-protection") options.add_argument("--start-maximized") options.add_argument("--no-first-run") options.add_argument("--no-default-browser-check") # 禁用Chrome组件自动更新(可选) options.add_argument("--disable-component-update") driver = webdriver.Chrome(options=options)
3. 复制配置文件到临时目录并修改权限(解决登录状态丢失问题)
若直接使用原配置文件出现登录未验证情况,可复制原配置文件到临时目录,修改权限后让Selenium使用该目录:
import shutil import tempfile import stat # 创建临时目录 temp_user_data = tempfile.mkdtemp() # 复制原User Data目录到临时目录 shutil.copytree(user_data_directory, temp_user_data, dirs_exist_ok=True) # 修改临时目录权限,确保当前用户可读写 os.chmod(temp_user_data, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) # 配置ChromeOptions使用临时目录 options.add_argument(f"--user-data-dir={temp_user_data}") options.add_argument(f"--profile-directory={profile_dir}")
4. 以管理员权限运行脚本
Windows系统下,右键点击Python脚本或终端,选择“以管理员身份运行”,避免权限不足导致无法访问配置文件或创建DevTools端口文件。
5. 检查ChromeDriver版本兼容性
确保使用的ChromeDriver版本与Chrome 137.0.7151.68完全匹配,版本不兼容也会导致会话创建失败。
内容的提问来源于stack exchange,提问作者Sai krishna
相关产品推荐
相关产品推荐

