我在设置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";
答案 0 :(得分:2)
我在使用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
并在“配置文件路径”指定的位置打开“首选项”文件来找到此文件的位置。这表明默认的"download"
键有一个带有这些值的对象。
然后我可以通过打开Selenium Chrome浏览器使用的偏好设置文件来检查更改是否已应用(再次通过检查chrome://version
中的位置)。
同样为了禁用阻止文件下载的内置Chrome PDF Viewer,我在配置中添加了以下几行:
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);
由于我今天浪费了另一个小时,这里是运行相同版本的Selenium的Firefox(49+)的配置(注意:这不会与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));