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

C# 无法从chrome设置默认下载目录,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我在设置chrome驱动程序的默认下载文件夹时遇到问题。 我找到了一些与此相关的信息,但没有一个是有效的。 这就是我尝试过的: var options = new ChromeOptionsWithPrefs(); options.AddArguments("start-maximized"); options.prefs = new Dictionary<string, object> { { "download.default_directory"

我在设置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);
我使用的是chrome驱动程序2.9(最新版本)和chrome版本33。 还尝试为chrome设置默认目录,当我启动web驱动程序时,我希望默认目录会更改,但我没有这样做

你对我如何设置这个默认文件夹有什么新想法吗

编辑:添加声明:

string folderName = @"C:\Browser";

我在使用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);

火狐
由于我今天又浪费了一个小时,下面是运行相同版本Selenium的Firefox(49+)的配置(注意:这不适用于GeckoDriver 0.10.0和Selenium 3.0.0+,GeckoDriver必须是版本0.11.1):

其中
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));

我们可以看到您对
folderName
的初始化吗?您可以在代码示例中看到,我实现了它,但不起作用。哦,对不起,就像您提供的示例中一样,最初是我的实现,它在2-4周前起作用,但现在不起作用。
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));
application/pdf;application/excel;...
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));