這是我正在使用的,用戶代理可以成功設置,而下載首選項不能。如何使用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