Oto, czego używam, można ustawić klienta użytkownika, a preferencje pobierania nie.Jak ustawić preferencje przeglądarki Chrome za pomocą powiązania Selenium Webdriver .NET?
Windows 7, Chrome 26, selen 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);
Zrobione z 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": ""
}
sprawdzenia temp pliku preferencji w *temp\Google\Chrome\User Data\Default\Preferences
, no "default_directory"
i są ustawione.
"download": {
"directory_upgrade": true
},
Działa jak urok. Dziękuję Ci. Skąd to wiedziałeś? Wszelkie referencje? –
Dowiedziałem się z https://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches#List_of_recognized_capabilities, że prefs powinien być częścią chromeOptions. Następnie skonwertowałem sterownik Selenium .NET z JetBrains dotPeek, aby zobaczyć, w jaki sposób przekazywał on opcje do chromeedriver.exe. Wygląda na to, że ChromeOptions jest dosłownie opakowaniem wokół chromowanych kontrolek chromeOptions. Biblioteka .NET serializuje ChromeOptions do JSON i przekazuje je do chromedriver. Dziedzicząc z ChromeOptions i dodając własne właściwości, możesz dodać więcej opcji :-) –
Bravo, Martin! To zadziałało cudownie! Małe zastrzeżenie dla czytelników, chociaż zasady stylizacji .NET i spójności wymagają, aby właściwości były pisane wielką literą, nie zamieniają na wielką wartość właściwości 'prefs'. W przeciwnym razie Sterownik Chrome nie będzie w stanie przeanalizować go poprawnie i wystąpi błąd podczas wywoływania. –