这是我正在使用的,用户代理可以成功设置,而下载首选项不能。如何使用Selenium Webdriver .NET绑定来设置Chrome首选项?
Windows 7中,26铬,硒 - DOTNET-2.31.2,chromedriver_win_26.0.1383.0
ChromeOptions chromeOptions = new ChromeOptions();
var prefs = new Dictionary<string, object> {
{ "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
},
工程就像一个魅力。谢谢。你怎么知道这件事的?任何参考? – 2013-08-12 21:05:14
我从https://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches#List_of_recognized_capabilities了解到,这些首选项应该是chromeOptions的一部分。然后我使用JetBrains dotPeek反向设计了Selenium .NET驱动程序,以查看它是如何将选项传递给chromedriver.exe的。显然,ChromeOptions是chromeOptions-object chromedriver期待的一款封装程序。 .NET库将ChromeOptions序列化为JSON并将其传递给chromedriver。通过继承ChromeOptions并添加您自己的属性,您可以添加更多选项:-) – 2013-08-13 06:17:36
Bravo,Martin!这工作非常好!尽管.NET样式和一致性规则要求将大写属性设为大写,但读者的一小部分免责声明不会使'prefs'属性大写。否则,Chrome驱动程序将无法正确解析它,并会在被调用时发生错误。 – 2014-01-03 17:27:04