You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非C盘路径下C# Selenium项目中WebDriverManager的使用及跨卷IO异常解决方法

解决WebDriverManager跨盘符运行的IO异常问题

嘿,这个问题我之前踩过坑!你遇到的System.IO.IOException : Source and destination path must have identical roots. Move will not work across volumes.错误,是因为WebDriverManager默认的工作逻辑导致的:它会先把兼容的驱动下载到系统临时目录(大多在C盘),然后尝试把驱动文件移动到你的项目目录——如果项目在其他盘符(比如D/E盘),跨磁盘卷的移动操作就会触发这个错误。

给你几个实用的解决办法,按优先级推荐:

1. 自定义同盘符的驱动缓存目录(最推荐)

直接把WebDriverManager的缓存目录设置在你项目所在的盘符下,这样下载和移动操作都在同一个卷里,就不会有跨卷问题了。代码示例:

var chromeConfig = new ChromeConfig();
// 将缓存目录设置为项目根目录下的webdriver文件夹
string cachePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "webdriver");
chromeConfig.SetCachePath(cachePath);
new WebDriverManager.DriverManager().SetUpDriver(chromeConfig);

这样WebDriverManager会先把驱动下载到这个同盘符的缓存目录,后续的文件操作都在同一卷内,完美避开跨卷移动的限制。

2. 禁用驱动文件移动操作

部分版本的WebDriverManager提供了跳过移动步骤的配置,直接使用临时目录里的驱动文件,这样就完全不需要移动操作了:

var chromeConfig = new ChromeConfig();
// 开启避免移动文件的配置
chromeConfig.SetAvoidMove(true);
new WebDriverManager.DriverManager().SetUpDriver(chromeConfig);

这个方法不需要额外创建目录,适合快速解决问题,不过要注意如果系统临时目录被清理,下次运行可能需要重新下载驱动。

3. 修改系统临时目录(全局设置,谨慎使用)

如果不想修改代码,可以把系统的TMP和TEMP环境变量路径改成项目所在盘符的某个文件夹(比如D:\Temp)。这样WebDriverManager下载的临时文件会直接存在这个同盘符目录,后续移动到项目目录就不会跨卷了。不过这是全局设置,可能影响其他依赖临时目录的程序,所以建议优先用前两个方法。

另外要注意:不管用哪个方法,都要确保程序对目标目录有读写权限,不然可能会触发新的权限异常哦。

内容的提问来源于stack exchange,提问作者QA User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 00:47:35