Comment télécharger et télécharger un fichier en utilisant Selenium
⚡ Résumé intelligent
Téléverser et télécharger des fichiers à l'aide de Selenium Les flux de travail WebDriver s'appuient sur la fonction native sendKeys() pour les champs de saisie, sur AutoIt ou Robot pour les boîtes de dialogue et sur les commandes CDP. Selenium 4. Définir des chemins de téléchargement sécurisés lors des exécutions automatisées.

Le chargement de fichiers dans WebDriver s'effectue simplement en utilisant la méthode sendKeys() sur le champ de sélection de fichier pour indiquer le chemin du fichier à charger. Ce tutoriel vous apprendra à gérer les chargements et les téléchargements de fichiers. Selenium Pilote Web.
Comment télécharger un fichier dans Selenium
Pour cette section, nous utiliserons https://demo.guru99.com/test/upload/ comme notre application de test. Ce site permet facilement à tout visiteur de télécharger des fichiers sans avoir à s'inscrire.

Disons que nous souhaitons télécharger le fichier « C:\newhtml.html ». Notre code WebDriver devrait ressembler à celui présenté ci-dessous.
importer org.openqa.selenium.*;
importer org.openqa.selenium.firefox.FirefoxConducteurs;
classe publique PG9 {
Vide public statique principal(Chaîne[] args) {
Système.setPropriété(« webdriver.gecko.driver »,« C:\\geckodriver.exe »);
Chaîne URL de base = « https://demo.guru99.com/test/upload/ »;
pilote web conducteur = New FirefoxConducteur();
pilote.get(baseUrl);
Élément Web uploadElement = driver.findElement(By.id(« uploadfile_0 »));
// Saisissez le chemin d'accès au fichier dans le champ de sélection de fichier
uploadElement.sendKeys(« C:\\newhtml.html »);
// cocher la case « J’accepte les conditions d’utilisation »
pilote.trouverElement(Par.id("termes")).click();
// cliquez sur le bouton « Téléverser un fichier »
pilote.trouverElement(Par.nom("envoyer")).click();
}
}
Après avoir exécuté ce script, vous devriez pouvoir télécharger le fichier avec succès et vous devriez recevoir un message similaire à celui-ci.
N'oubliez pas les deux points suivants lors du chargement de fichiers dans WebDriver :
- Il n'est pas nécessaire de simuler le clic sur le bouton « Parcourir ». WebDriver saisit automatiquement le chemin d'accès au fichier dans la zone de texte de sélection de fichier. élément.
- Lorsque vous définissez le chemin du fichier dans votre Java IDE, utilisez le caractère d'échappement approprié pour la barre oblique inverse.
Gestion des boîtes de dialogue de téléchargement sans saisie avec AutoIt
Lorsque la page utilise un bouton Parcourir personnalisé plutôt qu'un bouton natif L'élément, sendKeys() ne fonctionne pas. Dans ce cas, vous pouvez appeler un script AutoIt depuis Selenium Saisissez le chemin d'accès au fichier dans la boîte de dialogue du système d'exploitation et appuyez sur Entrée.
Enregistrez le script ci-dessous sous télécharger.au3, compilez-le en télécharger.exe, puis invoquez-le depuis Java après avoir cliqué sur le bouton Parcourir.
WinWaitActive("Ouvert")
Envoyer(« C:\newhtml.html »)
Envoyer("{ENTRER}")
Dès Java, déclencher l'assistant après le clic sur Parcourir :
Runtime.getRuntime().exec(« C:\\AutoIt\\upload.exe »);
La classe java.awt.Robot est une classe pure.Java Il existe une alternative lorsque AutoIt n'est pas disponible, bien qu'AutoIt soit plus fiable sur Windows car il attend le dialogue par titre.
Comment télécharger un fichier dans Selenium Pilote Web
WebDriver n'a pas la capacité d'accéder aux boîtes de dialogue de téléchargement présentés par les navigateurs lorsque vous cliquez sur un lien ou un bouton de téléchargement. Cependant, nous pouvons contourner ces boîtes de dialogue en utilisant un programme distinct appelé « wget ».
Qu’est-ce que Wget ?
Wget est un petit programme en ligne de commande facile à utiliser utilisé pour automatiser les téléchargements. Fondamentalement, nous accéderons à Wget à partir de notre script WebDriver pour effectuer le processus de téléchargement.
Configuration de Wget
Étape 1) Dans votre lecteur C, créez un nouveau dossier et nommez-le « Wget ».
Télécharger wget.exe à partir de là et placez-le dans le dossier Wget que vous avez créé à l'étape précédente.
Étape 2) Ouvrez Exécuter en appuyant sur Windows Appuyez sur la touche « R », saisissez « cmd » et cliquez sur OK.
Saisissez la commande « cd / » pour vous déplacer vers le répertoire racine.
Étape 3) Saisissez la commande pour vérifier si la configuration donnée fonctionne.
Il semble y avoir un problème d'écriture sur le lecteur C.
Étape 4) Vous devez déboguer les erreurs wget dans la ligne de commande avant d'exécuter le code. Selenium WebDriver. Ces erreurs persisteront dans Eclipse et les messages d'erreur seront moins informatifs. Il est préférable de commencer par faire fonctionner wget en ligne de commande. S'il fonctionne en ligne de commande, il fonctionnera certainement en ligne de commande. Eclipse.
Dans notre exemple, comme indiqué à l'étape 3, un problème survient lors de l'écriture sur le lecteur C. Changeons l'emplacement de téléchargement pour le lecteur D et vérifions le résultat.
Messenger a été téléchargé avec succès.
Avant de poursuivre, n'oubliez pas de supprimer le fichier téléchargé.
Utilisation de WebDriver et Wget
Dans l'exemple suivant, nous utiliserons WebDriver et wget pour télécharger un logiciel de chat populaire appelé Yahoo MessengerNotre base URL doit être https://demo.guru99.com/test/yahoo.html.
Étape 1) Importez le package « java.io.IOException » car nous devrons intercepter une IOException plus tard à l'étape 4.
Étape 2) Utilisez la fonction getAttribute() pour obtenir la valeur « href » du lien de téléchargement et enregistrez-la dans une variable de type chaîne de caractères. Dans cet exemple, nous avons nommé la variable « sourceLocation ».
Étape 3) Configurez la syntaxe de wget à l'aide de la commande suivante.
Étape 4) Lancez le processus de téléchargement en appelant wget à partir de notre code WebDriver.
Pour résumer, votre code WebDriver pourrait ressembler à celui présenté ci-dessous.
importer java.io.IOException ;
importer org.openqa.selenium.*;
importer org.openqa.selenium.firefox.FirefoxConducteurs;
classe publique PG8 {
Vide public statique principal(Chaîne[] args) {
Système.setPropriété(« webdriver.gecko.driver »,« C:\\geckodriver.exe »);
Chaîne URL de base = « https://demo.guru99.com/test/yahoo.html »;
pilote web conducteur = New FirefoxConducteur();
pilote.get(baseUrl);
Élément Web bouton de téléchargement = pilote.findElement(Par.id(« téléchargement Messenger »));
Chaîne sourceLocation = downloadButton.getAttribute(« href »);
Chaîne wget_command = « cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate » + sourceLocation;
Essai {
Processus exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println(« Valeur de sortie : » + exitVal);
} capture (InterruptionException | IOException ex) {
System.out.println(ex.toString());
}
conducteur.fermer();
}
}
Après avoir exécuté ce code, vérifiez votre lecteur D et vérifiez que le Yahoo Messenger Le programme d'installation y a été téléchargé avec succès.
Définir un chemin de téléchargement personnalisé avec Selenium 4 CDP
Selenium La version 4 expose le protocole Chrome DevTools, qui permet de contrôler le comportement de téléchargement du navigateur sans outils tiers. L'extrait de code ci-dessous redirige tous les téléchargements vers un dossier personnalisé et ignore l'invite « Enregistrer sous », afin que les fichiers soient enregistrés à l'emplacement attendu par le test.
Carte<Chaîne,Sujet> paramètres = New HashMap<>();
params.put("comportement", "Autoriser");
params.put(« chemin de téléchargement », « D:\\selenium-downloads »);
pilote.executeCdpCommand(« Page.setDownloadBehavior », params);
pilote.get(« https://demo.guru99.com/test/yahoo.html »);
pilote.trouverElement(Par.id(« téléchargement Messenger »)).click();
Vous pouvez vérifier le téléchargement en interrogeant le répertoire cible pour le nom de fichier attendu et en vérifiant sa taille, ce qui rend le test déterministe sans scripts externes.












