You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C#环境下Selenium WebDriver 4无法适配Edge(Chromium)的解决方案求助

解决Selenium 4中Edge(Chromium)无法加载CapabilityType的问题

我之前升级到Selenium 4时也碰到过一模一样的Edge报错问题,折腾了好一会儿才找到根源——Selenium 4彻底移除了OpenQA.Selenium.Remote.CapabilityType这个类,同时对Edge的配置方式做了较大调整,结合你的情况,给你几个可行的解决方案:

1. 替换所有过时的CapabilityType引用

Selenium 4推荐使用浏览器专属的Options类来配置(比如EdgeOptions),而不是旧的DesiredCapabilities+CapabilityType组合。举个代码修改的例子:

// 旧的Selenium 3写法(会报错)
var capabilities = new DesiredCapabilities();
capabilities.SetCapability(CapabilityType.BrowserName, "MicrosoftEdge");
capabilities.SetCapability(CapabilityType.MaximizeBrowserWindow, true);

// 新的Selenium 4写法
var edgeOptions = new EdgeOptions();
// EdgeOptions默认就指向Chromium版Edge,无需额外指定BrowserName
edgeOptions.AddArgument("start-maximized"); // 对应旧的MaximizeBrowserWindow配置
// 其他配置直接通过edgeOptions的属性或AddArgument/AddAdditionalCapability方法添加

2. 确保所有Selenium相关包版本完全一致

一定要保证以下NuGet包的版本完全相同(比如都用4.15.0或最新稳定版):

  • Selenium.WebDriver
  • Selenium.Support
  • Selenium.MicrosoftEdgeDriver
    哪怕其中一个包版本不匹配,都可能引发类型加载冲突。你可以在NuGet包管理器里用「Consolidate」功能快速统一版本。

3. 清理项目缓存与旧驱动文件

  • 删除项目根目录下的binobj文件夹,然后重新编译项目,避免旧的WebDriver.dll残留
  • 检查本地Edge浏览器版本(在edge://version/里查看),确保Selenium.MicrosoftEdgeDriver的版本和浏览器版本完全匹配,版本不兼容也会导致各种奇怪的加载错误

4. 排查第三方依赖的版本冲突

如果你的项目里用到了其他测试相关的第三方库(比如报告生成、测试框架扩展),这些库可能还依赖Selenium 3版本,从而引发版本冲突。可以通过NuGet的「依赖项」列表查看是否有库引用了旧版Selenium,要么升级该第三方库,要么暂时替换为兼容Selenium 4的替代库。

按照这几步操作下来,应该就能解决Edge的加载问题了,我当时就是靠统一包版本+替换配置写法搞定的。

内容的提问来源于stack exchange,提问作者El General Magnifico

火山引擎 最新活动