Comment télécharger & Télécharger un fichier à l'aide de Selenium Webdriver

Table des matières:

Anonim

Dans ce didacticiel, nous allons apprendre à gérer les chargements et téléchargements de fichiers.

Téléchargement de fichiers

Pour cette section, nous utiliserons http://demo.guru99.com/test/upload/ comme application de test. Ce site permet facilement à tout visiteur de télécharger des fichiers sans avoir à s'inscrire.

Le téléchargement de fichiers dans WebDriver se fait simplement en utilisant la méthode sendKeys () dans le champ de saisie de sélection de fichier pour entrer le chemin du fichier à télécharger.

Gérer le popup de téléchargement de fichier dans Selenium Webdriver
gérer la fenêtre contextuelle de téléchargement de fichiers dans sélénium webdriver

Disons que nous souhaitons télécharger le fichier "C: \ newhtml.html". Notre code WebDriver doit être similaire à celui illustré ci-dessous.

package newproject;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;classe publique PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/upload/";Pilote WebDriver = nouveau FirefoxDriver ();driver.get (baseUrl);WebElement uploadElement = driver.findElement (By.id ("uploadfile_0"));// entrez le chemin du fichier dans le champ de saisie de sélection de fichieruploadElement.sendKeys ("C: \\ newhtml.html");// cochez la case "J'accepte les conditions d'utilisation"driver.findElement (By.id ("terms")). click ();// cliquez sur le bouton "UploadFile"driver.findElement (Par.nom ("envoyer")). click ();}}

Après avoir exécuté ce script, vous devriez être en mesure de télécharger le fichier avec succès et vous devriez recevoir un message similaire à celui-ci.

N'oubliez pas de suivre deux choses lors du téléchargement de fichiers dans WebDriver

  1. Il n'est pas nécessaire de simuler le clic du bouton "Parcourir". WebDriver entre automatiquement le chemin du fichier dans la zone de texte de sélection de fichier de l'élément
  2. Lorsque vous définissez le chemin du fichier dans votre IDE Java, utilisez le caractère d'échappement approprié pour la barre oblique inverse.

Téléchargement de fichiers

WebDriver n'a pas la capacité d'accéder aux boîtes de dialogue de téléchargement présentées 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 séparé appelé "wget".

Qu'est-ce que Wget?

Wget est un petit programme de 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.

Configurer Wget

Étape 1: Dans votre lecteur C, créez un nouveau dossier et nommez-le "Wget".

Téléchargez wget.exe à partir d'ici et placez-le dans le dossier Wget que vous avez créé à l'étape ci-dessus.

Étape 2: Ouvrez Exécuter en appuyant sur la touche Windows + "R"; tapez "cmd et cliquez sur ok

Tapez la commande "cd /" pour vous déplacer vers le répertoire racine

Étape 3: Tapez la commande pour vérifier si la configuration donnée fonctionne

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

Il semble y avoir un problème d'écriture dans le lecteur C.

Étape 4: Vous devez déboguer les erreurs wget en ligne de commande avant d'exécuter le code à l'aide de Selenium Webdriver. Ces erreurs persisteront dans Eclipse et les messages d'erreur ne seront pas aussi informatifs. Il est préférable de commencer par faire fonctionner wget en utilisant la ligne de commande. Si cela fonctionne en ligne de commande, cela fonctionnera certainement dans Eclipse.

Dans notre exemple, comme indiqué à l'étape 3, il y a un problème d'écriture dans le lecteur C. Modifions l'emplacement de téléchargement sur le lecteur D et vérifions les résultats.

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

Messenger a été téléchargé avec succès.

Avant de continuer, 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 Messenger. Notre URL de base sera http://demo.guru99.com/test/yahoo.html.

Étape 1

Importez le package "java.io.IOException" car nous devrons attraper une IOException plus tard à l'étape 4.

Étape 2

Utilisez getAttribute () pour obtenir la valeur "href" du lien de téléchargement et enregistrez-la en tant que variable String. Dans ce cas, 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 le tout, votre code WebDriver pourrait ressembler à celui illustré ci-dessous.

package newproject;import java.io.IOException;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;classe publique PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/yahoo.html";Pilote WebDriver = nouveau FirefoxDriver ();driver.get (baseUrl);WebElement downloadButton = driver.findElement (Par.id ("téléchargement de messager"));String sourceLocation = downloadButton.getAttribute ("href");Chaîne wget_command = "cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate" + sourceLocation;essayer {Process exec = Runtime.getRuntime (). Exec (wget_command);int exitVal = exec.waitFor ();System.out.println ("Valeur de sortie: + exitVal);} catch (InterruptedException | IOException ex) {System.out.println (ex.toString ());}driver.close ();}}

Après avoir exécuté ce code, vérifiez votre lecteur D et vérifiez que le programme d'installation de Yahoo Messenger y a été téléchargé avec succès.

Résumé

  • Le téléchargement de fichiers dans WebDriver se fait simplement en utilisant la méthode sendKeys () dans le champ de saisie de sélection de fichier pour entrer le chemin du fichier à télécharger.
  • WebDriver ne peut pas automatiser seul le téléchargement des fichiers.
  • Le moyen le plus simple de télécharger des fichiers à l'aide de WebDriver est d'utiliser Wget.