Как отключить "Этот тип файла может нанести вред вашему компьютеру"

Я использую Селен Хромедрайвер для автоматизации веб-приложений. В моем приложении мне нужно скачать XML файлы. Но когда я загружаю XML файл, я получаю сообщение "Этот тип файла может нанести вред вашему компьютеру". Я хочу отключить это всплывающее окно с помощью селена Хромедрайвер, и я хочу, чтобы файлы такого типа загружались всегда. Как это может быть сделано? enter image description here

  • Версия Selenium: 2.47.1
  • Версия Chromedriver: 2.19

ОБНОВЛЕНИЕ это давняя ошибка Chrome с 2012 года.

Ответ 1

Проблема с файлами XML начала происходить со мной с Chrome 47.0.2526.80 м. Проведя, возможно, 6 часов, пытаясь отключить все возможные варианты безопасности, я попробовал другой подход.

По иронии судьбы кажется, что включение на опции Chrome "Protect you and your device from dangerous sites" удаляет сообщение "This type of file can harm your computer. Do you want to keep file.xml anyway?"

Я использую "Ruby" с "Watir-Webdriver", где код выглядит следующим образом:

prefs = {
    'safebrowsing' => {
        'enabled' => true,
    }
}

b = Watir::Browser.new :chrome, :prefs => prefs

Запуск такого браузера, при включенной опции safebrowsing, загружает файлы xml без предупреждения о сообщении. Принцип должен быть одинаков для Selenium с любым языком программирования.

##### Отредактировано: 13-04-2017

В последней версии Google Chrome этого решения недостаточно. Кроме того, необходимо запустить браузер с помощью следующего переключателя:

--safebrowsing-disable-download-protection

Теперь код запуска браузера будет выглядеть примерно так:

b = Watir::Browser.new :chrome, :prefs => prefs, :switches => %w[--safebrowsing-disable-download-protection]))

Ответ 2

Я размещаю ниже полного кода, который загружал загрузку файла для меня: Надеюсь, это поможет:-) Я использую Java-Selenium

System.setProperty("webdriver.chrome.driver", "C:/chromedriver/chromedriver.exe");
        String downloadFilepath = "D:/MyDeskDownload";
        HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
        chromePrefs.put("profile.default_content_settings.popups", 0);
        chromePrefs.put("download.default_directory", downloadFilepath);
        chromePrefs.put("safebrowsing.enabled", "true"); 
        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("prefs", chromePrefs);
        DesiredCapabilities cap = DesiredCapabilities.chrome();
        cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        cap.setCapability(ChromeOptions.CAPABILITY, options);
        WebDriver driver = new ChromeDriver(cap);

Ответ 3

Следующий код Python работает для меня

chromeOptions = webdriver.ChromeOptions()
prefs = {'safebrowsing.enabled': 'false'}
chromeOptions.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions)

Ответ 4

принятый ответ прекратил работу после недавнего обновления Chrome. Теперь вам нужно использовать ключи командной строки --safebrowsing-disable-extension-blacklist и --safebrowsing-disable-download-protection. Это Конфигурация WebdriverIO, которая работает для меня:

var driver = require('webdriverio');
var client = driver.remote({
    desiredCapabilities: {
        browserName: 'chrome',
        chromeOptions: {
            args: [
                'disable-extensions',
                'safebrowsing-disable-extension-blacklist',
                'safebrowsing-disable-download-protection'
            ],
            prefs: {
                'safebrowsing.enabled': true
            }
        }
    }
});

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

Я нашел эти ключи, прочитав этот список. Вы также можете увидеть их в Chromium source.

Ответ 5

Единственный обходной путь, который работает для меня:

Используйте аргумент с путем к профилю Chrome

chromeOptions.add_argument(chrome_profile_path)

Найдите файл download_file_types.pb в папке профиля Chrome. В моем случае ..chromedriver\my_profile\FileTypePolicies\36\download_file_types.pb

Сделайте резервную копию этого файла, а затем откройте его любым гекседором (вы можете использовать oline).

Найдите тип файла, который вы хотите загрузить, например, xml и измените его на что-нибудь, например, xxx

Ответ 6

Я использовал все предложенные параметры Chrome в С# и только когда у меня работал интернет, но когда интернет отключился, ни один из них не работал для меня. (Я не уверен. Может быть chrome safebrowsing необходимо подключение к Интернету)

Используя более старую версию chrome (version71) и chromedriver (версия 2.46), и после загрузки я увидел, что загруженный XML файл содержит имя Unconfirmed'с расширением crdownload' и анализ файла XML не будет работать должным образом. Наконец, создание ожидания с Thread.Sleep(1000) решило мою проблему.

            IWebDriver Driver;

            //chromedriver.exe version2.46 path
            string path = @"C:\cd71";
            ChromeDriverService driverService = ChromeDriverService.CreateDefaultService(path, "chromedriver.exe");
            ChromeOptions options = new ChromeOptions();
            // options.AddArgument("headless");
            options.AddArgument("--window-position=-32000,-32000");
            options.AddUserProfilePreference("download.default_directory", @"c:\xmlFiles");
            options.AddUserProfilePreference("download.prompt_for_download", false);
            options.AddUserProfilePreference("disable-popup-blocking", "true");
            options.AddUserProfilePreference("safebrowsing.enabled", "true");
            Driver = new ChromeDriver(driverService, options);

            try
            {
                 Driver.Navigate().GoToUrl(url);
                 Thread.Sleep(1000);
                 //other works like: XML parse
            }
            catch
            {

            }