Access中Selenium+ChromeDriver加载默认Profile报错及版本适配求助
解决方案
一、先解决ChromeDriver与Chrome版本适配问题
- 你当前Chrome版本121.0.6167.161,Driver版本121.0.6167.85属于同大版本,理论上兼容,但小版本差异可能引发Profile加载异常。可尝试两个方向:
- 升级Chrome到122.0.6261.x版本,下载对应版本的ChromeDriver(122.0.6261.29)替换现有Driver,再测试Profile加载。
- 降级Chrome到121.0.6167.85版本,确保与Driver完全匹配(可通过Chrome离线安装包实现)。
二、修正Profile加载的启动参数(解决DevToolsActivePort报错)
报错核心是Chrome启动时无法获取调试端口,通常是Profile路径指定错误或启动参数缺失。在Access的VBA代码中调整ChromeOptions:
Dim chromeOpts As New ChromeOptions ' 替换为你的Chrome用户数据目录路径,注意路径空格需用双引号包裹 chromeOpts.AddArgument "--user-data-dir=""C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data""" ' 指定默认Profile,若使用其他Profile替换对应名称即可 chromeOpts.AddArgument "--profile-directory=Default" ' 添加必要参数解决端口和权限问题 chromeOpts.AddArgument "--no-sandbox" chromeOpts.AddArgument "--disable-dev-shm-usage" chromeOpts.AddArgument "--remote-debugging-port=9222" ' 启动Driver时传入配置 Dim driver As New ChromeDriver driver.Start "chrome", chromeOpts
注意:运行脚本前必须关闭所有已打开的Chrome窗口,避免Profile被占用。
三、Cookie持久化替代方案(绕开Profile加载问题)
如果上述方法仍无法解决,可采用Cookie导入的方式维持登录状态:
- 手动打开Chrome,登录Ebay并完成短信验证,保持登录状态。
- 使用浏览器插件(如EditThisCookie)导出当前页面的Cookie为可读取格式。
- 在VBA脚本中读取Cookie数据,逐个添加到Driver实例:
Dim driver As New ChromeDriver driver.Start "chrome" driver.Get "https://www.ebay.com" ' 示例:cookieList为包含Cookie信息的数组,格式为"name=value; domain=.ebay.com; path=/" Dim cookieList As Variant cookieList = Array("cookie1=xxx; domain=.ebay.com; path=/", "cookie2=yyy; domain=.ebay.com; path=/") Dim cookie As Variant For Each cookie In cookieList driver.ExecuteScript "document.cookie = arguments[0]", cookie Next ' 刷新页面后即可保持登录状态 driver.Refresh
这种方法无需加载Profile,只要Cookie未过期,就能直接跳过登录验证流程。
内容的提问来源于stack exchange,提问作者Big Cheese
相关产品推荐
相关产品推荐

