IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Un bon développeur est un développeur flemmard !

[Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement

Noter ce billet
par , 17/11/2014 à 14h36 (1848 Affichages)
Bonjour,

L'un des problèmes récurrent avec Selenium, c'est la gestion des téléchargements !
En effet, lorsqu'on test le téléchargement des fichiers, on se retrouve avec la popup de validation. Or Selenium ne donne pas accès à cette popup.
D'après, les informations que j'ai lu à droite et à gauche. Cette popup est considéré comme une popup système et donc hors porté de Selenium.

Cependant, il existe une solution ! Il suffit d'utiliser la configuration du profil Firefox :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/zip");
driver = new FirefoxDriver(profile);
L'exemple ci-dessus permet d'enregistrer directement les fichiers de MIME type "application/zip".
La problématique est qu'on ne sait pas forcement le type des fichiers que l'on va être amener à télécharger ! Cependant, il existe des listes de tous les MIME type.
Nous pouvons donc avoir une configuration nous permettant d'auto-sauvegarder l'ensemble des fichiers :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static void main(String[] args) {
		String url ="http://www.planete-sciences.org/robot/data/file/coupe/2015/ASSY_Eurobot_2015_igs.zip";
 
		FirefoxProfile profile = new FirefoxProfile();
		String neverAsk = mineTypeListAsString();
		profile.setPreference("browser.helperApps.neverAsk.saveToDisk", neverAsk);
		FirefoxDriver driver = new FirefoxDriver(profile); 
		driver.get(url);
}
	private static String mineTypeListAsString() {
		StringBuilder sb = new StringBuilder();
		for (String type : mineTypeList()) {
			sb.append(type).append(";");
		}
		return sb.toString();
	}
 
	/**
         * Cette fonction est basé sur la liste des MIME type présente à cette adresse :
         * <a href="http://www.sitepoint.com/web-foundations/mime-types-complete-list/" target="_blank">http://www.sitepoint.com/web-foundat...complete-list/</a>
         * à la date du 23/10/2014
         * @return
         */
	private static Set<String> mineTypeList(){
		Set<String> mineTypeList = new HashSet<String>();
		mineTypeList.add("application/acad");
		mineTypeList.add("application/arj");
		mineTypeList.add("application/base64");
		//Suite de la méthode non présent pour problématique de taille maximal du billet.
		mineTypeList.add("application/x-compressed");
		return mineTypeList;
	}

Ainsi, dès qu'on que le navigateur pensera qu'il faut télécharger le document, celui-ci l'enregistrera directement, sans la popup.

Il est bien sûr possible de préciser un dossier pour le téléchargement :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
String path = "C:\\tmp";
profile.setPreference("browser.download.dir", path);
profile.setPreference("browser.download.folderList", 2);
Note : Si le dossier n'existe pas, celui-ci sera crée !

Voici la classe java correspondante :
DownloadTest.java

Personnellement, je n'utilise que FireFox pour mes tests Selenium d'où le fait que je ne présente pas la solution pour les autres navigateurs. Mais si vous connaissez la la solution pour les autres navigateurs. Envoyez moi un MP ou laissez un commentaire !

Cordialement,
Patrick Kolodziejczyk.

PS : Si vous cherchez un bon tutoriel sur Selenium :
http://atatorus.developpez.com/tutor...avec-selenium/

Source :
http://dataqzone.com/download-file-w...save-as-popup/
http://www.sitepoint.com/web-foundat...complete-list/
http://en.wikipedia.org/wiki/Internet_media_type
http://browsers.about.com/od/aboutco...folderList.htm
http://atatorus.developpez.com/tutor...avec-selenium/

Envoyer le billet « [Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement » dans le blog Viadeo Envoyer le billet « [Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement » dans le blog Twitter Envoyer le billet « [Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement » dans le blog Google Envoyer le billet « [Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement » dans le blog Facebook Envoyer le billet « [Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement » dans le blog Digg Envoyer le billet « [Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement » dans le blog Delicious Envoyer le billet « [Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement » dans le blog MySpace Envoyer le billet « [Selenium][Java][FirefoxDriver] Le problème de la popup de téléchargement » dans le blog Yahoo

Catégories
Java

Commentaires