设置Chrome默认配置文件时Selenium Chromedriver报SessionNotCreatedError
VBA Selenium Chrome配置文件加载问题:SessionNotCreatedError解决办法
问题复现
当通过VBA的Selenium绑定ChromeDriver,指定默认用户配置文件启动Chrome应用模式时,Chrome窗口能正常打开并加载配置,但ChromeDriver抛出运行时错误'33': SessionNotCreatedError,提示DevToolsActivePort file doesn't exist,判定Chrome崩溃。不指定配置文件时交互正常,环境为Chrome 121.0.6167.86、ChromeDriver 121.0.6167.85。
解决方案
1. 强制关闭所有Chrome进程后启动
ChromeDriver需要独占控制Chrome实例,若有后台Chrome进程(包括托盘里的后台应用)占用端口,会导致连接失败:
- 打开任务管理器,结束所有
chrome.exe进程 - 重新运行VBA脚本
2. 手动指定远程调试端口
给Chrome添加调试端口参数,让ChromeDriver能明确找到连接入口,修改VBA代码中的Options部分:
options.AddArgument "--remote-debugging-port=9222" options.AddArgument "--user-data-dir=""C:\Users\[你的用户名]\AppData\Local\Google\Chrome\User Data""" options.AddArgument "--profile-directory=Default" options.AddArgument "--app=http://localhost:8080"
注:若9222端口被占用,可更换为其他未使用端口(如9223);路径含空格时必须用双引号包裹。
3. 关闭Chrome后台运行权限
Chrome默认会在关闭窗口后保留后台进程,导致端口被占用:
- 打开Chrome,进入
设置 > 系统 - 取消勾选「关闭Chrome后继续运行后台应用」
4. 确保配置文件路径绝对准确
检查--user-data-dir的路径是否正确:
- 路径需指向Chrome用户数据的根目录(即包含
Default文件夹的User Data目录) - 替换
[你的用户名]为实际Windows登录用户名,注意大小写和特殊字符
5. 匹配Chrome与ChromeDriver的精确版本
即使主版本一致,微小版本差异也可能引发兼容性问题:
- 下载与Chrome版本(121.0.6167.86)完全一致的ChromeDriver,替换现有驱动文件
6. 连接已启动的Chrome实例(备选方案)
若上述方法无效,可先手动启动带配置的Chrome,再让ChromeDriver连接已运行的实例:
- 手动打开Chrome,右键快捷方式添加启动参数:
--user-data-dir="C:\Users\[你的用户名]\AppData\Local\Google\Chrome\User Data" --profile-directory=Default --remote-debugging-port=9222 --app=http://localhost:8080 - 修改VBA代码连接已运行的实例:
Sub ConnectToExistingChrome() Dim driver As New ChromeDriver driver.SetCapability "debuggerAddress", "localhost:9222" ' 后续交互代码 End Sub
内容的提问来源于stack exchange,提问作者GAFAAAAA
相关产品推荐
相关产品推荐

