Désactiver les images dans Selenium Google ChromeDriver
Comment désactiver les images dans Google chrome lorsque vous l'utilisez à travers le Sélénium et le c#?
J'ai tenté de 6 façons différentes et aucune n'a fonctionné. J'ai même essayé de la réponse sur cette StackOverflow question, cependant, je pense que l'info en il est hors de date.
- Chrome pilote: V2.2
- Version de Chrome: V29.0.1547.66 m
- Sélénium: V2.35
Toutes les tentatives que j'ai fait ne provoquent pas d'exceptions, ils fonctionnent normalement, mais toujours afficher les images:
Tentative 1:
ChromeOptions co = new ChromeOptions();
co.AddArgument("--disable-images");
IWebDriver driver = new ChromeDriver(co);
Tentative 2:
DesiredCapabilities capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability("chrome.switches", new string[1] { "disable-images" });
Tentative 3:
ChromeOptions co = new ChromeOptions();
co.AddAdditionalCapability("chrome.switches", new string[1] { "disable-images" });
Tentative 4:
var imageSetting = new Dictionary<string, object>();
imageSetting.Add("images", 2);
Dictionary<string, object> content = new Dictionary<string, object>();
content.Add("profile.default_content_settings", imageSetting);
var prefs = new Dictionary<string, object>();
prefs.Add("prefs", content);
var options = new ChromeOptions();
var field = options.GetType().GetField("additionalCapabilities", BindingFlags.Instance | BindingFlags.NonPublic);
if (field != null)
{
var dict = field.GetValue(options) as IDictionary<string, object>;
if (dict != null)
dict.Add(ChromeOptions.Capability, prefs);
}
Tentative de 5:
ChromeOptions options = new ChromeOptions();
options.AddAdditionalCapability("profile.default_content_settings", 2);
Tentative de 6:
Dictionary<String, Object> contentSettings = new Dictionary<String, Object>();
contentSettings.Add("images", 2);
Dictionary<String, Object> preferences = new Dictionary<String, Object>();
preferences.Add("profile.default_content_settings", contentSettings);
DesiredCapabilities caps = DesiredCapabilities.Chrome();
caps.SetCapability("chrome.prefs", preferences);
source d'informationauteur Fidel
Vous devez vous connecter pour publier un commentaire.
C'est ma solution
Pour votre méthode 1-3, je ne vois pas Chrome commutateur appelé
--disable-images
énumérées ici. Donc, même si les extraits de code sont corrects, ils ne travaillent pas n'importe quoi. Où avez-vous que l'interrupteur? Toutes les références?Pour les méthodes 4-6, je suppose que vous avez eu l'idée de cette question chromdriver. Je ne sais pas si ce
{'profile.default_content_settings': {'images': 2}}
est toujours valide ou pas, mais vous pouvez lui donner un essai avec le code suivant (qui était à l'origine la réponse à Comment définir les préférences de Chrome à l'aide de Selenium Webdriver .NET de liaison?la réponse fournie par Martin Devillers).Utilisation http://chrome-extension-downloader.com/ pour télécharger le "Bloc Image" extension (https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj?hl=en-GB). L'extension empêche l'image de télécharger en premier lieu. Maintenant, c'est juste une question de chargement à l'aide de l'instruction suivante:
Vous devez utiliser
--blink-settings
au lieu de--disable-images
par:qui travaille également dans headless mode. Réglage de profil ne fonctionne pas dans headless mode. Vous pouvez le vérifier en capture d'écran:
Remarque: j'ai été en utilisant python avec le sélénium, mais je pense qu'il devrait être facile de transférer à c#.
J'ai trouvé la solution la plus simple. Cette idée visée de Python:Désactiver les images en Sélénium Google ChromeDriver
Je vous recommande de créer un nouveau profil, personnaliser ce profil afin qu'il ne charge pas les images, et d'utiliser ce profil comme un chromeOption à définir votre pilote.
Voir: cet article