使用Selenium无法将文件从C:Downloads移动到其他位置的问题咨询
Selenium自定义下载路径问题解答
能否移动已下载到C盘默认路径的文件到指定位置
可以,该操作不依赖Selenium的能力,直接使用你编写脚本所用编程语言的原生文件操作API即可实现:
- Java可使用
java.nio.file.Files类的move()方法完成文件移动 - Python可使用
shutil.move()方法完成文件移动
操作前只要先定位到C盘Downloads目录下的目标文件,再传入目标路径参数执行即可。
能否预先配置让文件直接下载到目标位置
可以,这是更推荐的方案,无需后续执行文件移动操作。该配置属于Selenium启动浏览器时的参数配置,和Eclipse无关,不需要在Eclipse中做额外设置,不同浏览器的配置方式如下:
Chrome浏览器配置示例(Java)
import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.chrome.ChromeDriver; import java.util.HashMap; public class DownloadTest { public static void main(String[] args) { ChromeOptions options = new ChromeOptions(); HashMap<String, Object> prefs = new HashMap<>(); // 替换为你的目标下载绝对路径,注意Windows下路径反斜杠要转义 prefs.put("download.default_directory", "D:\\my_selenium_downloads"); options.setExperimentalOption("prefs", prefs); // 初始化带配置的浏览器实例 ChromeDriver driver = new ChromeDriver(options); } }
Firefox浏览器配置示例(Java)
import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.FirefoxDriver; public class DownloadTest { public static void main(String[] args) { FirefoxOptions options = new FirefoxOptions(); FirefoxProfile profile = new FirefoxProfile(); // 设置自定义下载路径 profile.setPreference("browser.download.dir", "D:\\my_selenium_downloads"); // 固定配置:2代表使用自定义下载路径 profile.setPreference("browser.download.folderList", 2); // 配置指定MIME类型的文件不需要弹出下载确认框,可根据你要下载的文件类型调整MIME值 profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream,application/pdf,text/csv"); options.setProfile(profile); FirefoxDriver driver = new FirefoxDriver(options); } }
注意事项
- 配置的下载路径必须是已经存在的绝对路径,若路径不存在,浏览器会自动回退到默认下载路径,建议配置前先通过代码判断路径是否存在,不存在则提前创建。
- 无头模式下的下载路径配置逻辑和上述完全一致,无需额外调整。
内容的提问来源于stack exchange,提问作者Rukesh Kumar
相关产品推荐
相关产品推荐

