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?
UPDATE c'est bug de longue date de Chrome depuis 2012.
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]))
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)
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);
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 .