VS 2017使用Selenium.WebDriver NuGet包时找不到chromedriver.exe
解决VS2017中Selenium ChromeDriver找不到的问题
我之前也碰到过类似的情况,VS2015里用NuGet装Selenium顺风顺水,到了VS2017就抛出DriverServiceNotFoundException,其实大多是驱动复制、版本兼容或者项目配置的问题,给你几个排查和解决的步骤:
1. 先确认驱动是否真的在输出目录里
VS2017的构建行为和2015有些差异,Selenium.Chrome.WebDriver包默认应该把chromedriver.exe复制到项目的bin/Debug或bin/Release目录下,但有时候会失效。你可以手动去对应的输出文件夹里找一找:
- 如果找不到,说明NuGet包的自动复制逻辑没生效,得往下看后续步骤;
- 如果找到了,那可能是版本不兼容或者路径识别的问题。
2. 检查Selenium包的版本兼容性
你用的是Selenium.WebDriver 3.11.1搭配Selenium.Chrome.WebDriver 2.37.0,这两个版本其实不兼容!WebDriver和ChromeDriver的版本是有严格对应关系的:
Selenium.WebDriver 3.11.x对应的ChromeDriver版本应该是2.38到2.41之间,2.37.0版本太老了,WebDriver无法识别它。- 解决办法:卸载当前的
Selenium.Chrome.WebDriver,安装和WebDriver 3.11.1匹配的版本(比如2.40.0),或者直接升级WebDriver到较新的稳定版,再安装对应版本的ChromeDriver。
3. 修复NuGet包的自动复制设置
如果是PackageReference格式的项目(VS2017默认可能用这个),有时候包的复制文件配置会出问题:
- 右键项目 -> 管理NuGet程序包,找到
Selenium.Chrome.WebDriver,确认它的安装状态,尝试卸载后重新安装; - 检查项目文件(.csproj)里是否有类似下面的配置,如果没有,手动添加(注意替换版本号):
<ItemGroup> <PackageReference Include="Selenium.Chrome.WebDriver" Version="2.40.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> </ItemGroup>
4. 手动指定驱动路径(临时解决方案)
如果上面的方法都不行,可以在代码里手动指定chromedriver的路径,确保WebDriver能找到它:
using System.IO; using System.Reflection; using OpenQA.Selenium.Chrome; // 获取当前程序集的输出目录 string driverDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); ChromeOptions options = new ChromeOptions(); ChromeDriver driver = new ChromeDriver(driverDirectory, options);
5. 清理并重建解决方案
有时候旧的构建缓存会导致文件复制异常:
- 点击菜单栏的“生成” -> “清理解决方案”;
- 然后删除项目的
bin和obj文件夹; - 最后重新构建解决方案,让NuGet重新复制所有依赖文件。
内容的提问来源于stack exchange,提问作者Frank H.
相关产品推荐
相关产品推荐

