ChromeDriver V124间歇性Selenium WebDriver异常排查求助
关于ChromeDriver V124间歇性触发WebDriverException:disconnected: unable to send message to renderer的排查方案
问题背景
在Visual Studio中基于.Net框架编写Selenium测试用例,使用ChromeDriver,此前运行正常。但ChromeDriver更新至V124后,出现间歇性异常:测试过程中Chrome浏览器会随机关闭,抛出特定错误。
错误信息
OpenQA.Selenium.WebDriverException: disconnected: unable to send message to renderer
(failed to check if window was closed: disconnected: not connected to DevTools) (Session info: chrome=124.0.6367.156)
当前ChromeOptions配置
optn.AddArgument("--no-sandbox"); optn.AddArgument("--ignore-certificate-errors"); optn.AddArgument("--no-first-run"); optn.AddArgument("--disable-fre"); optn.AddArgument("--no-default-browser-check"); optn.AddArgument("--disable-gpu"); optn.AddArgument("--disable-blink-features=AutomationControlled"); optn.AddArgument("--disable-extensions"); optn.AddArgument("--test-type"); optn.AddArguments("disable-infobars"); optn.AddArguments("--disable-notifications"); optn.AddArguments("--disable-popup-blocking"); optn.AddArguments("start-maximized"); optn.AddExcludedArgument("--enable-automation");
注:测试无法以无头模式运行,异常发生时电脑未处于休眠状态。
已尝试的解决措施
- 重启系统;
- 在Visual Studio 2019中运行测试,仍出现相同错误;
- 卸载并重新安装近期Windows安全更新,无改善;
- 尝试其他ChromeDriver版本,但因与当前Chrome版本不兼容而失败,且无法回退Chrome版本。
可尝试的排查方向
1. 调整ChromeOptions参数,移除潜在冲突配置
- 移除
--test-type参数:该参数为旧版Chrome测试模式标识,新版Chrome已不再兼容,易引发渲染进程异常; - 临时移除
--disable-blink-features=AutomationControlled参数:新版Chrome的DevTools协议对该反检测参数的处理逻辑有变化,可能导致通信中断; - 统一参数格式:将
disable-infobars改为--disable-infobars,统一使用AddArgument(单数)方法添加参数,避免解析异常。
2. 优化Selenium会话与进程管理
- 强制使用
driver.Quit()替代driver.Close():Close()仅关闭当前窗口,易残留渲染进程;Quit()会彻底终止ChromeDriver和浏览器进程; - 增加测试收尾的进程清理:在测试类的
Teardown方法中,强制杀死残留的chrome.exe、chromedriver.exe进程,避免资源堆积; - 降低测试并行度:若为并行执行测试,减少同时运行的测试数量,避免系统资源耗尽导致浏览器进程被强制终止。
3. 排查系统资源与环境干扰
- 实时监控CPU、内存占用:测试过程中通过任务管理器观察Chrome进程资源消耗,若内存占用过高会被系统强制终止;
- 关闭后台干扰软件:暂停杀毒软件、VPN、系统级浏览器扩展等,这类软件可能拦截ChromeDriver与浏览器的DevTools通信;
- 锁定Chrome版本:关闭Chrome自动更新功能,避免测试过程中版本自动变更引发兼容性问题。
4. 启用ChromeDriver日志定位细节
- 开启详细日志记录,捕获DevTools通信异常:
var service = ChromeDriverService.CreateDefaultService(); service.LogPath = "chromedriver.log"; service.EnableVerboseLogging = true; var driver = new ChromeDriver(service, optn);
- 查看生成的
chromedriver.log,重点关注异常发生前的日志条目,比如渲染进程崩溃提示、连接超时记录等。
5. 验证Selenium版本兼容性
- 升级Selenium .Net包:将
Selenium.WebDriver和Selenium.Support更新至最新稳定版,旧版Selenium可能对ChromeDriver 124的协议支持不完善; - 重新下载匹配版本的ChromeDriver:确保ChromeDriver 124与当前Chrome版本(124.0.6367.156)严格对应,避免版本下载错误。
内容的提问来源于stack exchange,提问作者SlaughterHouse5.1
相关产品推荐
相关产品推荐

