Selenium DevTools无限等待问题求助:Chrome/EdgeDriver调用异常
Selenium DevTools会话获取及NetworkManager启动无限等待问题
问题详情
- 环境:Win10系统,Selenium版本4.0/4.8/4.9,ChromeDriver 114,Chrome 114(EdgeDriver同样存在该问题)
- 现象:调用
devTools.GetDevToolsSession()时出现无限等待;尝试通过NetworkManager.StartMonitoring()实现网络资源访问时,同样触发无限等待;不调用DevTools相关功能时,所有功能正常,已在两台不同设备复现 - 需求:在Selenium导航至URL时访问网络资源
代码示例
获取DevTools会话代码
Dim driver = New ChromeDriver(MyApp.AssetsPath) Dim devTools As IDevTools = driver Dim session As DevToolsSession = devTools.GetDevToolsSession() ...
NetworkManager监控代码
Dim driver = New ChromeDriver(MyApp.AssetsPath) SetupNetworkLoggingAsync(driver) ... Public Async Function SetupNetworkLoggingAsync(driver As IWebDriver) As Threading.Tasks.Task Dim manager As NetworkManager = New NetworkManager(driver) AddHandler manager.NetworkResponseReceived, AddressOf ResponseHandler Await manager.StartMonitoring() End Function
排查方向及解决方案
- 显式指定DevTools协议版本:初始化ChromeDriver时通过选项指定与浏览器匹配的协议版本,避免版本协商超时
Dim options As New ChromeOptions() options.AddAdditionalCapability("se:cdp", "114") ' 对应Chrome 114的协议版本 Dim driver = New ChromeDriver(MyApp.AssetsPath, options)
- 手动开启调试端口连接:先启动带远程调试端口的Chrome,再让Driver连接,绕开自动会话建立问题
- 执行Chrome启动命令:
chrome.exe --remote-debugging-port=9222 - 代码中连接调试端口:
- 执行Chrome启动命令:
Dim options As New ChromeOptions() options.DebuggerAddress = "localhost:9222" Dim driver = New ChromeDriver(options) Dim devTools As IDevTools = driver Dim session = devTools.GetDevToolsSession()
- 改用异步方式获取会话:替换同步方法为异步,避免阻塞
Dim driver = New ChromeDriver(MyApp.AssetsPath) Dim devTools As IDevTools = driver Dim session As DevToolsSession = Await devTools.GetDevToolsSessionAsync()
- 检查代理与防火墙:代理或防火墙可能阻断DevTools的WebSocket连接,尝试关闭代理或添加ChromeDriver/Chrome的防火墙例外
- 更新.NET环境:确保使用的.NET版本与Selenium兼容,旧版.NET可能存在异步WebSocket处理阻塞问题
内容的提问来源于stack exchange,提问作者Dr. Clò Luca
相关产品推荐
相关产品推荐

