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.

  • 📤 Méthode de téléchargement : Utilisez la fonction sendKeys() sur l'élément d'entrée de fichier pour saisir le chemin d'accès absolu au fichier sans cliquer sur Parcourir.
  • (I.e. Chemin de téléchargement : Configurez un répertoire de téléchargement personnalisé via ChromeOptions ou CDP Page.setDownloadBehavior dans Selenium 4.
  • 🪟 Dialogues natifs : Déclencher des scripts AutoIt ou java.awt.Robot lorsque le sélecteur de fichiers du système d'exploitation empêche WebDriver d'interagir.
  • 🤖 Assistance IA : L'IA générative suggère des sélecteurs, crée des fichiers de données de test et valide automatiquement l'intégrité des fichiers téléchargés.
  • 🛡️ Contrôle de Validation : Confirmez la réussite du téléchargement grâce aux messages de réponse et vérifiez les téléchargements en comparant la taille du fichier ou la somme de contrôle.

Comment télécharger et télécharger un fichier en utilisant Selenium

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.

Télécharger le fichier dans Selenium
Gérer la fenêtre contextuelle de téléchargement de fichier dans Selenium Pilote Web

Disons que nous souhaitons télécharger le fichier « C:\newhtml.html ». Notre code WebDriver devrait ressembler à celui présenté ci-dessous.

paquet nouveau projet ;
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.

Télécharger le fichier dans Selenium

N'oubliez pas les deux points suivants lors du chargement de fichiers dans WebDriver :

  1. 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.
  2. Lorsque vous définissez le chemin du fichier dans votre Java IDE, utilisez le caractère d'échappement approprié pour la barre oblique inverse.

Télécharger le fichier dans Selenium

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.

; upload.au3 – attend la boîte de dialogue Ouvrir et saisit le chemin du fichier
WinWaitActive("Ouvert")
Envoyer(« C:\newhtml.html »)
Envoyer("{ENTRER}")

Dès Java, déclencher l'assistant après le clic sur Parcourir :

pilote.trouverElement(Par.id(«browseBtn»)).click();
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.

Configuration de Wget

Étape 2) Ouvrez Exécuter en appuyant sur Windows Appuyez sur la touche « R », saisissez « cmd » et cliquez sur OK.

Configuration de Wget

Saisissez la commande « cd / » pour vous déplacer vers le répertoire racine.

Configuration de Wget

Étape 3) Saisissez la commande pour vérifier si la configuration donnée fonctionne.

cmd /c C:\\Wget\\wget.exe -PC: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Configuration de Wget

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.

cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Configuration de Wget

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.

Utilisation de WebDriver et Wget

Étape 1) Importez le package « java.io.IOException » car nous devrons intercepter une IOException plus tard à l'étape 4.

Utilisation de WebDriver et Wget

É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 ».

Utilisation de WebDriver et Wget

Étape 3) Configurez la syntaxe de wget à l'aide de la commande suivante.

Utilisation de WebDriver et Wget

Étape 4) Lancez le processus de téléchargement en appelant wget à partir de notre code WebDriver.

Utilisation de WebDriver et Wget

Pour résumer, votre code WebDriver pourrait ressembler à celui présenté ci-dessous.

paquet nouveau projet ;
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.

Utilisation de WebDriver et Wget

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.

ChromeDriver conducteur = New ChromeDriver();
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.

FAQ

Selenium appelle sendKeys() sur le L'élément contient le chemin d'accès absolu au fichier. Le navigateur remplit directement le champ ; aucun sélecteur de fichiers du système d'exploitation ne s'ouvre et aucun clic sur « Parcourir » n'est nécessaire.

Lorsque la page ne propose pas de champ de saisie de fichier, utilisez AutoIt sur Windows ou la classe java.awt.Robot. Ces outils permettent de saisir le chemin d'accès dans la boîte de dialogue du système d'exploitation actif, puis d'appuyer sur Entrée après avoir cliqué sur le bouton Parcourir.

Appelez executeCdpCommand(“Page.setDownloadBehavior”, params) avec le comportement défini sur autoriser et downloadPath défini sur votre dossier. Selenium La touche 4 transmet la commande aux outils de développement Chrome et l'invite « Enregistrer sous » est ignorée.

Oui. Les assistants IA lisent votre formulaire d'importation, suggèrent des sélecteurs, génèrent des fichiers limites (comme des exemples vides, surdimensionnés ou avec une extension incorrecte) et écrivent le bloc sendKeys(). Cela réduit le temps de configuration et détecte les cas particuliers que les testeurs humains manquent souvent.

des outils d'IA Le système analyse le dossier cible, compare la taille et la somme de contrôle des fichiers aux valeurs attendues et signale les anomalies. Les modèles de vision peuvent même ouvrir des fichiers PDF ou des images et vérifier que leur contenu correspond à l'étiquette du lien, ce qui élimine la nécessité d'une vérification manuelle lors des tests de régression.

Wget contourne complètement le navigateur et enregistre le fichier directement sur le disque via un processus en ligne de commande. Il est utile sur les anciens systèmes. Selenium 2 ou 3 configurations où les préférences de téléchargement CDP et ChromeOptions ne sont pas disponibles.

Résumez cet article avec :