如何使用Selenium Webdriver .NET绑定设置Chrome首选项?

这是我正在使用的,用户代理可以成功设置,而下载首选项不能。

Windows 7,Chrome 26,Selenium-dotnet-2.31.2,chromedriver_win_26.0.1383.0

ChromeOptions chromeOptions = new ChromeOptions(); var prefs = new Dictionary { { "download.default_directory", @"C:\code" }, { "download.prompt_for_download", false } }; chromeOptions.AddAdditionalCapability("chrome.prefs", prefs); chromeOptions.AddArgument("--user-agent=" + "some safari agent"); var driver = new ChromeDriver(chromeOptions); 

取自chromedriver.log:

 [1.201][FINE]: Initializing session with capabilities { "browserName": "chrome", "chrome.prefs": { "download.default_directory": "C:\\code", "download.prompt_for_download": false }, "chrome.switches": [ "--user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version..." ], "chromeOptions": { "args": [ "--user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version..." ], "binary": "", "extensions": [ ] }, "javascriptEnabled": true, "platform": "WINDOWS", "version": "" } 

检查*temp\Google\Chrome\User Data\Default\Preferences的临时首选项文件,未设置"default_directory""prompt_for_download"

  "download": { "directory_upgrade": true }, 

Selenium dotNet驱动程序不支持开箱即用设置chrome.prefs 。 问题是chrome.prefs必须在chromeOptions节点下定义为prefsChromeOptions类不包含此变量,因此您需要创建自己的ChromeOptions类:

 public class ChromeOptionsWithPrefs: ChromeOptions { public Dictionary prefs { get; set; } } public static void Initialize() { var options = new ChromeOptionsWithPrefs(); options.prefs = new Dictionary { { "intl.accept_languages", "nl" } }; _driver = new ChromeDriver(@"C:\path\chromedriver", options); } 

如果您已更新到Chrome版本36.0.x和Selenium 2.42,则Martins解决方案不再有效。

它似乎已经更新。 您现在可以使用以下代码

 ChromeOptions options = new ChromeOptions(); options.AddUserProfilePreference(string preferenceName, object preferenceValue); 

我目前使用它将我的打印机设置更改为“另存为PDF”,而不是默认使用此代码作为示例

 ChromeOptions options = new ChromeOptions(); options.AddUserProfilePreference("printing.print_preview_sticky_settings.appState", "{\"version\":2,\"isGcpPromoDismissed\":false,\"selectedDestinationId\":\"Save as PDF\"); 

我认为马丁的解决方案非常好而且准确,但它突然停止为我工作,所以很自然地我必须看看能否找到解决方案。