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
},
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 prefs
chromeOptions
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);
}
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.