无法从chrome设置默认下载目录

本文关键字:下载 默认 设置 chrome | 更新日期: 2023-09-27 17:51:04

我在设置chrome驱动程序的默认下载文件夹时遇到问题。我找到了一些相关的信息,但没有一个是工作的。这是我尝试过的:

var options = new ChromeOptionsWithPrefs();
options.AddArguments("start-maximized");
options.prefs = new Dictionary<string, object> {
                { "download.default_directory", folderName },
                { "download.prompt_for_download", false },
                { "intl.accept_languages", "nl" }};
webdriver = new ChromeDriver(chromedriver_path, options);

var options = new ChromeOptions();
options.AddUserProfilePreference("download.default_directory", folderName);
options.AddUserProfilePreference("intl.accept_languages", "nl");
options.AddUserProfilePreference("download.prompt_for_download", "false");

我使用chrome驱动程序2.9(最新一个)和chrome版本33。也试图设置一个默认目录为chrome,当我启动web驱动程序,我希望默认目录被改变,但我没有工作,以及。

你有什么新主意我可以设置这个默认文件夹吗?

编辑:添加声明:

string folderName = @"C:'Browser";

无法从chrome设置默认下载目录

我在ChromeDriver 2.24和Selenium 3.0中遇到了麻烦。

对我来说,下面的代码是有效的:

var service = ChromeDriverService.CreateDefaultService(driverPath);
var downloadPrefs = new Dictionary<string, object>
{
    {"default_directory", @"C:'Users'underscore'MyCustomLocation"},
    {"directory_upgrade", true}
};
var options = new ChromeOptions();
options.AddUserProfilePreference("download", downloadPrefs);
return new ChromeDriver(service, options);

希望这能帮助任何想要做这件事的人。

以防将来发生变化;我通过打开默认的Chrome首选项文件来验证所需的格式。该文件的位置可以通过浏览到chrome://version并在配置文件路径指定的位置打开Preferences文件来找到。这表明默认的"download"键有一个具有这些值的对象。

然后我可以通过打开Selenium Chrome浏览器使用的首选项文件(再次通过检查chrome://version的位置)来检查更改是否应用。

编辑2


同样,为了禁用阻止文件下载的内置Chrome PDF查看器,我在配置中添加了以下行:

var pdfViewerPlugin = new Dictionary<string, object>
{
    ["enabled"] = false,
    ["name"] = "Chrome PDF Viewer"
};
var pluginsList = new Dictionary<string, object>
{
    { "plugins_list", new [] { pdfViewerPlugin } }
};
var downloadPreferences = new Dictionary<string, object>
{
    {"default_directory", launchOptions.DownloadFolder},
    {"directory_upgrade", true}
};
var options = new ChromeOptions();
options.AddUserProfilePreference("download", downloadPreferences);
options.AddUserProfilePreference("plugins", pluginsList);

Firefox


因为我今天又浪费了一个小时,这里是Firefox(49+)运行相同版本的Selenium的配置(注意:这将不能与GeckoDriver 0.10.0和Selenium 3.0.0+一起工作,GeckoDriver必须是0.11.1版本):

var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "GeckoBinary");
var service = FirefoxDriverService.CreateDefaultService(path);
service.HideCommandPromptWindow = true;
var profile = new FirefoxProfile();
profile.SetPreference("browser.download.dir", myDownloadLocation);
profile.SetPreference("browser.download.downloadDir", myDownloadLocation);
profile.SetPreference("browser.download.defaultFolder", myDownloadLocation);
profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", ContentTypes.AllTypesSingleLine);
profile.SetPreference("pdfjs.disabled", true);
profile.SetPreference("browser.download.useDownloadDir", true);
profile.SetPreference("browser.download.folderList", 2);
return new FirefoxDriver(service, new FirefoxOptions
{
    Profile = profile
}, TimeSpan.FromMinutes(5));

其中ContentTypes.AllTypesSingleLine只是包含mime类型的字符串,例如:

application/pdf;application/excel;...

从GeckoDriver 0.11.1和Selenium 3.0.1开始,这可以简化为:

var options = new FirefoxOptions();
options.SetPreference("browser.download.dir", launchOptions.DownloadFolder);
options.SetPreference("browser.download.downloadDir", launchOptions.DownloadFolder);
options.SetPreference("browser.download.defaultFolder", launchOptions.DownloadFolder);
options.SetPreference("browser.helperApps.neverAsk.saveToDisk", ContentTypes.AllTypesSingleLine);
options.SetPreference("pdfjs.disabled", true);
options.SetPreference("browser.download.useDownloadDir", true);
options.SetPreference("browser.download.folderList", 2);
return new FirefoxDriver(service, options, TimeSpan.FromMinutes(5));