Comment définir les préférences Chrome en utilisant le sélénium Webdriver.NET liant?

voici ce que j'utilise, user agent peut être paramétré avec succès, alors que les préférences de téléchargement ne le 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);

tiré 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 temp Preferences à *tempGoogleChromeUser DataDefaultPreferences, pas "default_directory" et "prompt_for_download" sont définies.

   "download": {
      "directory_upgrade": true
   },
15
demandé sur Roman C 2013-04-05 06:39:09

2 réponses

le pilote dotNet de sélénium ne supporte pas le paramètre chrome.prefs hors de la boîte. Le problème est que chrome.prefs doit être défini comme prefschromeOptions nœud. ChromeOptions class ne contient pas cette variable, vous devrez donc créer votre propre ChromeOptions catégorie:

public class ChromeOptionsWithPrefs: ChromeOptions
{
    public Dictionary<string,object> prefs { get; set; }
}

public static void Initialize()
{
    var options = new ChromeOptionsWithPrefs();
    options.prefs = new Dictionary<string, object>
    {
        { "intl.accept_languages", "nl" }
    };
    _driver = new ChromeDriver(@"C:\path\chromedriver", options);
}
20
répondu Martin Devillers 2013-08-12 20:07:15

si vous avez mis à jour vers la version 36.0 de Chrome.x et le sélénium 2.42, la solution de 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 les paramètres de mon imprimante pour "enregistrer en PDF" au lieu de l'utiliser par défaut en utilisant ce code comme exemple

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

J'ai pensé que la solution de Martin était très bonne et précise, mais elle a soudainement cessé de fonctionner pour moi, donc naturellement je devais voir si je pouvais trouver une solution.

26
répondu Ben 2014-08-01 23:27:04