gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:22 26 4
gpt4 key购买 nike

我在为 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 设置默认目录,当我启动网络驱动程序时,我希望默认目录发生变化,但我没有正常工作。

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

编辑:添加声明:

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

希望这对现在尝试这样做的人有所帮助。

以防将来发生变化;我通过打开默认的 Chrome 首选项文件验证了所需的格式。通过浏览到 chrome://version 并在 Profile Path 指定的位置打开 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);

火狐


由于我今天又浪费了一个小时,这里是运行相同版本 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));

关于c# - 无法从 chrome 设置默认下载目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com