web-dev-qa-db-fra.com

Comment désactiver "Ce type de fichier peut endommager votre ordinateur" pop-up

J'utilise Selenium chromedriver pour automatiser une application Web ..__ Dans mon application, je dois télécharger des fichiers xml. Mais lorsque je télécharge un fichier XML, le message «Ce type de fichier peut endommager votre ordinateur» apparaît. Je souhaite désactiver cette fenêtre contextuelle à l’aide de Selenium chromedriver et je souhaite que ces types de fichiers soient toujours téléchargés. Comment cela peut-il être fait?  enter image description here

  • Version de sélénium: 2.47.1
  • Version Chromedriver: 2.19

UPDATE c'est bug de longue date de Chrome depuis 2012.

18
Mosam Mehta

Le problème avec les fichiers XML a commencé à se produire à partir de Chrome 47.0.2526.80 m . Après avoir passé environ 6 heures à essayer de désactiver toutes les options de sécurité possibles, j’ai essayé une approche différente. 

Ironiquement, il semble que l'activation de l'option -de Google Chrome "Protect you and your device from dangerous sites" supprime le message "This type of file can harm your computer. Do you want to keep file.xml anyway?" 

J'utilise 'Ruby' avec 'Watir-Webdriver' où le code ressemble à ceci:

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

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

En démarrant le navigateur de cette manière, avec l'option safebrowsing activée, télécharge les fichiers xml sans avertissement. Le principe devrait être le même pour Selenium avec n'importe quel langage de programmation. 

#####Modifié le 13-04-2017

Dans la dernière version de Google Chrome, la solution ci-dessus ne suffit pas. De plus, il est nécessaire de démarrer le navigateur avec le commutateur suivant:

--safebrowsing-disable-download-protection

Maintenant, le code pour démarrer le navigateur ressemblerait à ceci:

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

Suivre le code Python fonctionne pour moi

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

Je publie ci-dessous le code complet qui a permis le téléchargement de fichier: J'espère que cela aide :-) J'utilise 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);
4
Abhishek Sathe

La réponse acceptée a cessé de fonctionner après une mise à jour récente de Chrome. Vous devez maintenant utiliser les commutateurs de ligne de commande --safebrowsing-disable-extension-blacklist et --safebrowsing-disable-download-protection. Voici la config WebdriverIO qui fonctionne pour moi:

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
            }
        }
    }
});

Notez que je désactive également les extensions, car elles interfèrent généralement avec les tests automatisés, mais cela n'est pas strictement nécessaire pour résoudre le problème de téléchargement de fichiers XML et JavaScript.

J'ai trouvé ces commutateurs en lisant cette liste . Vous pouvez également les voir dans la source Chromium .

0
chris