派生测试中DriverManager在Project A与B表现不一致问题
我有一个C#自动化解决方案,包含两个项目:
- Project A:包含使用
DriverManager创建驱动的BaseTest类,以及继承自BaseTest的测试类ProjectATest。 - Project B:包含继承自
BaseTest的测试类ProjectBTest。
我的Chrome版本是113,最新版本为114。执行Project A的测试时,DriverManager正常创建113版本的驱动;但执行Project B的测试时,它创建了114版本的驱动,导致测试失败。
异常信息
OneTimeSetUp: System.InvalidOperationException : session not created: This version of ChromeDriver only supports Chrome version 114
Current browser version is 113.0.5672.129 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe (SessionNotCreated)
相关代码
BaseTest类(驱动创建代码)
namespace Project_A { public class BaseTest { protected IWebDriver driver; [OneTimeSetUp] public void Setup() { new DriverManager().SetUpDriver(new ChromeConfig()); driver = new ChromeDriver(); driver.Navigate().GoToUrl("https://stackoverflow.com/"); } } }
ProjectATest类
namespace Project_A { internal class ProjectATest : BaseTest { [Test] public void TestA() => Assert.Pass(); } }
ProjectBTest类
namespace Project_B { internal class ProjectBTest : BaseTest { [Test] public void TestB() => Assert.Pass(); } }
补充:使用Firefox时一切运行正常。
1. 强制指定ChromeDriver版本
在ChromeConfig中显式指定需要的113版本,避免DriverManager自动拉取最新版本:
new DriverManager().SetUpDriver(new ChromeConfig { Version = "113.0.5672.63" // 对应你Chrome版本的Driver版本,可根据实际情况调整 });
2. 统一项目依赖包版本
检查Project B中DriverManager相关的NuGet包(如WebDriverManager)版本,确保和Project A完全一致。如果Project B的包版本更新,可能会改变驱动拉取逻辑,统一版本即可解决差异问题。
3. 清理Driver缓存
DriverManager会缓存下载的驱动,手动清理缓存目录(通常为%USERPROFILE%\.cache\selenium)中的114版本ChromeDriver,确保测试时只能调用113版本的驱动文件。
4. 指定Chrome二进制路径(可选)
如果系统中存在多个Chrome版本,初始化ChromeDriver时显式指定当前使用的113版本二进制路径,避免版本检测混乱:
var options = new ChromeOptions(); options.BinaryLocation = @"C:\Program Files\Google\Chrome\Application\chrome.exe"; driver = new ChromeDriver(options);
内容的提问来源于stack exchange,提问作者I.sh.

