VBA通过MSXML2.ServerXMLHTTP调用ChromeDriver自定义user-data-dir失效
问题解决方案
核心错误原因
你之前构造的请求JSON结构不符合ChromeDriver的规范要求,Chrome启动参数必须嵌套在goog:chromeOptions对象下的args数组字段中,同时你的JSON存在引号转义错误、多余符号、嵌套层级错误的问题。
修正后的代码
Private Function SendRequest() As Dictionary Dim client As Object Set client = CreateObject("MSXML2.ServerXMLHTTP") client.Open "POST", "http://localhost:9515/session" client.setRequestHeader "Content-Type", "application/json" Dim strJsonRequest As String ' 符合ChromeDriver规范的JSON结构 strJsonRequest = "{""capabilities"":{""alwaysMatch"":{""goog:chromeOptions"":{""args"":[""--user-data-dir=D:\\Profiles\\tdmsoares\\Desktop\\tmpChromeUserData\\User Data""]}}}}" client.send strJsonRequest Do While client.readyState < 4 DoEvents Loop Set SendRequest = JsonConverter.ParseJson(client.responseText) End Function
注意事项
- 路径中的反斜杠必须转义为双反斜杠
\\,否则JSON会解析错误 args字段必须是数组格式,不能用字符串包裹数组符号- 如果需要添加其他Chrome启动参数,直接在
args数组里追加元素即可,比如添加窗口最大化参数就写成[""--user-data-dir=xxx"", ""--start-maximized""]
验证方式
调用接口后打印返回结果,若value.capabilities.chrome.userDataDir字段为你指定的路径则表示配置生效。
内容的提问来源于stack exchange,提问作者tdmsoares
相关产品推荐
相关产品推荐

