Ecco cosa sto utilizzando, l'agente utente può essere impostato correttamente, mentre le preferenze di download non possono.Come impostare le preferenze di Chrome usando il binding di Selenium Webdriver .NET?
Windows 7, Chrome 26, selenio-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);
Tratto da 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": ""
}
Controllare la temperatura file delle preferenze a *temp\Google\Chrome\User Data\Default\Preferences
, n. "default_directory"
e "prompt_for_download"
sono impostati.
"download": {
"directory_upgrade": true
},
Funziona come un fascino. Grazie. Come lo sapevi? Eventuali riferimenti? –
Ho appreso da https://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches#List_of_recognized_capabilities che i prefs dovrebbero far parte di chromeOptions. Quindi ho decodificato il driver Selenium .NET con JetBrains dotPeek per vedere come ha passato le opzioni a chromedriver.exe. Apparentemente ChromeOptions è abbastanza litrenaly come un wrapper attorno all'oggetto chromeOptions che chromedriver si aspetta. La libreria .NET serializza ChromeOptions in JSON e passa a chromedriver. Attingendo da ChromeOptions e aggiungendo le tue proprietà puoi aggiungere ulteriori opzioni :-) –
Bravo, Martin! Questo ha funzionato meravigliosamente! Un piccolo disclaimer per i lettori, sebbene le regole di stile e coerenza .NET richiedano che le proprietà siano in maiuscolo, non capitalizzare la proprietà 'prefs'. In caso contrario, il driver Chrome non sarà in grado di analizzarlo correttamente e tramite un errore dopo essere stato chiamato. –