Selenium C#中获取EdgeDriver版本的方法
解决EdgeDriver版本获取问题
首先,你的代码存在两处基础语法问题,先修正:
- C#中字符串转换方法是
ToString()(大写T),而非Java风格的toString() - 代码末尾多了一个冗余右括号,会导致编译错误
另外注意:你初始化DriverManager时误用了ChromeConfig,获取Edge驱动应当改用EdgeConfig。
针对EdgeDriver版本获取,提供两种可靠方案:
方案1:通过EdgeDriverService直接获取(推荐)
这种方式无需解析Capabilities,直接从驱动服务实例获取版本,逻辑更稳定:
// 创建EdgeDriver服务实例 var edgeService = EdgeDriverService.CreateDefaultService(); // 获取驱动版本 string driverVersion = edgeService.DriverVersion; // 使用该服务初始化EdgeDriver var driver = new EdgeDriver(edgeService);
方案2:从Capabilities中解析正确路径
Edge基于Chromium,其Capabilities结构与Chrome略有差异,版本信息通常在msedge字段下的msedgedriverVersion键中。如果不确定具体结构,可以先打印所有Capabilities键值对排查:
new DriverManager().SetUpDriver(new EdgeConfig()); EdgeDriver driver = new EdgeDriver(); try{ ICapabilities capabilities = driver.Capabilities; // 打印所有Capabilities键值,明确结构 foreach (var key in capabilities.GetCapabilityNames()) { Console.WriteLine($"{key}: {capabilities.GetCapability(key)}"); } // 解析版本(根据打印结果调整键名) var edgeInfo = capabilities.GetCapability("msedge") as Dictionary<string, object>; if (edgeInfo != null && edgeInfo.ContainsKey("msedgedriverVersion")) { string driver_version = edgeInfo["msedgedriverVersion"].ToString(); Console.WriteLine(driver_version); } } catch(Exception ex) { Console.WriteLine(ex.Message); }
内容的提问来源于stack exchange,提问作者Jorge Marín Ferrándiz
相关产品推荐
相关产品推荐

