使用golang的github.com/fedesog/webdriver包时Chrome无头模式失效排查
Chrome无头模式启用失败问题排查及修复
问题根源
你代码里直接把Chrome启动参数放在arguments键下,不符合WebDriver协议对Chrome配置项的规范——Chrome的启动参数需要嵌套在goog:chromeOptions(旧版本可用chromeOptions)的args字段中。另外,required参数重复指定相同启动参数完全没必要,反而可能引发配置冲突。
修复后的代码
chromeDriver := webdriver.NewChromeDriver("./chromedriver") err := chromeDriver.Start() if err != nil { log.Println(err) } desired := webdriver.Capabilities{ "Platform": "mac", "goog:chromeOptions": map[string]interface{}{ "args": []string{ "--headless=new", // 新版Chrome推荐用这个参数替代旧的--headless "--disable-gpu", "--window-size=1920,1200", "--ignore-certificate-errors", "--disable-extensions", "--no-sandbox", "--disable-dev-shm-usage", }, }, } // required参数无需重复配置,留空即可 session, err := chromeDriver.NewSession(desired, webdriver.Capabilities{}) if err != nil { panic(err.Error()) }
补充注意事项
- 若使用Chrome 112及以上版本,优先用
--headless=new,旧的--headless模式模拟旧版浏览器行为,易出现兼容性问题。 - 确保本地Chrome浏览器版本与chromedriver版本完全匹配,版本不兼容是启动失败的常见原因。
required参数仅用于声明必须满足的强制能力,一般场景下无需配置。
内容的提问来源于stack exchange,提问作者madol
相关产品推荐
相关产品推荐

