web-dev-qa-db-fra.com

Comment définir Chrome Préférences à l'aide de la liaison SELENIUM webDiver .NET?

Voici ce que j'utilise, l'agent utilisateur peut être défini avec succès, alors que les préférences de téléchargement ne peuvent pas.

Windows 7, Chrome 26, selenium-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);

Pris de 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": ""

}

Vérifiez le fichier de préférences TEMP à *temp\Google\Chrome\User Data\Default\Preferences, non "default_directory" et "Prompt_for_download" sont définis.

   "download": {
      "directory_upgrade": true
   },
18
Yi Zeng

Si vous avez mis à jour Chrome version 36.0.x et selenium 2.42, la solution Martins ne fonctionne plus.

Il semble avoir été mis à jour. Vous pouvez maintenant utiliser le code suivant

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

Je l'utilise actuellement pour modifier mes paramètres d'imprimante sur "Enregistrer sous PDF" au lieu de la valeur par défaut à l'aide de ce code comme exemple.

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

Je pensais que la solution de Martin était très bonne et précise, mais elle a soudainement cessé de travailler pour moi, alors naturellement, je devais voir si je pouvais trouver une solution.

27
Ben