Подтвердить что ты не робот

Отключить изображения в Selenium Google ChromeDriver

Как отключить изображения в Google Chrome при использовании через Selenium и С#?

Я попытался 6 способов, и никто не работал. Я даже попробовал ответить на этот вопрос StackOverflow, однако я думаю, что информация в нем устарела.

  • Драйвер Chrome: V2.2
  • версия Chrome: V29.0.1547.66 м
  • Selenium: V2.35

Все попытки, которые я сделал, не вызывают исключений, они работают нормально, но все же отображают изображения:

Попытка 1:

ChromeOptions co = new ChromeOptions();
co.AddArgument("--disable-images");
IWebDriver driver = new ChromeDriver(co);

Попытка 2:

DesiredCapabilities capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability("chrome.switches", new string[1] { "disable-images" });

Попытка 3:

ChromeOptions co = new ChromeOptions();
co.AddAdditionalCapability("chrome.switches", new string[1] { "disable-images" });

Попытка 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);
}

Попытка 5:

ChromeOptions options = new ChromeOptions();
options.AddAdditionalCapability("profile.default_content_settings", 2);

Попытка 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);
4b9b3361

Ответ 1

Используйте http://chrome-extension-downloader.com/, чтобы загрузить расширение "Block Image" (https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj?hl=en-GB). Расширение предотвращает загрузку изображения в первую очередь. Теперь просто загрузите его, используя следующую инструкцию:

    var options = new ChromeOptions();

    //use the block image extension to prevent images from downloading.
    options.AddExtension("Block-image_v1.0.crx");

    var driver = new ChromeDriver(options);

Ответ 2

Это мое решение

IWebDriver driver;
ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("profile.default_content_setting_values.images", 2);
driver = new ChromeDriver(options);

Ответ 3

Для вашего метода 1-3 я не вижу переключатель Chrome, называемый --disable-images указанный здесь. Поэтому, даже если фрагменты кода верны, они не будут работать ни на что. Откуда у вас этот переключатель? Любые ссылки?

Для методов 4-6 я предполагаю, что вы получили идею от этой проблемы с хромированием. Я не знаю, является ли этот {'profile.default_content_settings': {'images': 2}} по-прежнему действительным или нет, но вы можете попробовать его с помощью следующего кода (который первоначально был ответом на Как установить настройки Chrome с помощью Selenium Webdriver.NET binding?, ответ предоставляется Martin Devillers).

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> {
        { "profile.default_content_settings", new Dictionary<string, object>() { "images", 2 } }
    };
    var driver = new ChromeDriver(options);
}

Ответ 4

Вместо --disable-images вы должны использовать --blink-settings:

options.add_argument('--blink-settings=imagesEnabled=false')

который также работает в режиме без звука. Настройка профиля не работает в режиме безглавых. Вы можете проверить его снимок экрана:

driver.get_screenshot_as_file('headless.png')

Примечание. Я использовал python с селеном, но я думаю, что его легко переносить на С#.

Ответ 5

Я нашел простое решение. Эта идея ссылается на Python: отключить изображения в Selenium Google ChromeDriver

var service = ChromeDriverService.CreateDefaultService(@WebDriverPath);

var options = net ChromeOptions();
options.AddUserProfilePreference("profile.managed_default_content_settings.images", 2);
IWebDriver Driver = new ChromeDriver(service, options);

Ответ 6

Я рекомендую вам создать новый профиль, настроить этот профиль, чтобы он не загружал изображения, и использовать этот профиль как chromeOption для настройки вашего драйвера.

Смотрите: эта статья

Ответ 7

Более простой подход был бы исключительно:

ChromeOptions options = new ChromeOptions();
options.addArguments("headless","--blink-settings=imagesEnabled=false");