In diesem Tutorial erfahren Sie, wie Sie mit Datei-Uploads und -Downloads umgehen.
Dateien hochladen
In diesem Abschnitt verwenden wir http://demo.guru99.com/test/upload/ als Testanwendung. Auf dieser Website kann jeder Besucher problemlos Dateien hochladen, ohne dass er sich anmelden muss.
Das Hochladen von Dateien in WebDriver erfolgt einfach mit der sendKeys () -Methode im Eingabefeld für die Dateiauswahl, um den Pfad zu der hochzuladenden Datei einzugeben.

Angenommen, wir möchten die Datei "C: \ newhtml.html" hochladen. Unser WebDriver-Code sollte dem unten gezeigten entsprechen.
Paket newproject;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;öffentliche Klasse PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/upload/";WebDriver-Treiber = neuer FirefoxDriver ();driver.get (baseUrl);WebElement uploadElement = driver.findElement (By.id ("uploadfile_0"));// Geben Sie den Dateipfad in das Eingabefeld für die Dateiauswahl einuploadElement.sendKeys ("C: \\ newhtml.html");// Aktivieren Sie das Kontrollkästchen "Ich akzeptiere die Nutzungsbedingungen"driver.findElement (By.id ("Begriffe")). click ();// Klicken Sie auf die Schaltfläche "UploadFile"driver.findElement (By.name ("send")). click ();}}}}
Nachdem Sie dieses Skript ausgeführt haben, sollten Sie in der Lage sein, die Datei erfolgreich hochzuladen, und Sie sollten eine ähnliche Meldung erhalten.
Beachten Sie beim Hochladen von Dateien in WebDriver zwei Dinge
- Es ist nicht erforderlich, das Klicken auf die Schaltfläche "Durchsuchen" zu simulieren. WebDriver gibt den Dateipfad automatisch in das Textfeld zur Dateiauswahl des Elements ein
- Verwenden Sie beim Festlegen des Dateipfads in Ihrer Java-IDE das richtige Escape-Zeichen für den Schrägstrich.
Dateien herunterladen
WebDriver kann nicht auf die Download-Dialogfelder zugreifen, die von Browsern angezeigt werden, wenn Sie auf einen Download-Link oder eine Download-Schaltfläche klicken. Wir können diese Dialogfelder jedoch mit einem separaten Programm namens "wget" umgehen.
Was ist Wget?
Wget ist ein kleines und benutzerfreundliches Befehlszeilenprogramm zur Automatisierung von Downloads . Grundsätzlich greifen wir über unser WebDriver-Skript auf Wget zu, um den Downloadvorgang durchzuführen.
Wget einrichten
Schritt 1: Erstellen Sie in Ihrem C-Laufwerk einen neuen Ordner und nennen Sie ihn "Wget".
Laden Sie wget.exe von hier herunter und legen Sie es in dem Wget-Ordner ab, den Sie im obigen Schritt erstellt haben.
Schritt 2: Öffnen Sie Ausführen, indem Sie die Windows-Taste + "R" drücken. Geben Sie "cmd" ein und klicken Sie auf "OK"
Geben Sie den Befehl "cd /" ein, um in das Stammverzeichnis zu wechseln
Schritt 3: Geben Sie den Befehl ein, um zu überprüfen, ob das angegebene Setup funktioniert
cmd / c C: \\ Wget \\ wget.exe -PC: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
Es scheint ein Problem beim Schreiben in Laufwerk C zu geben.
Schritt 4: Sie müssen die wget-Fehler in der Befehlszeile debuggen, bevor Sie den Code mit Selenium Webdriver ausführen. Diese Fehler bleiben in Eclipse bestehen und die Fehlermeldungen sind nicht so informativ. Am besten lassen Sie wget zuerst über die Befehlszeile arbeiten. Wenn es in der Kommandozeile funktioniert, funktioniert es definitiv in Eclipse.
In unserem Beispiel tritt, wie in Schritt 3 gezeigt, ein Problem beim Schreiben in das Laufwerk C auf. Lassen Sie uns den Download-Speicherort auf Laufwerk D ändern und die Ergebnisse überprüfen.
cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
Messenger wurde erfolgreich heruntergeladen.
Bevor Sie fortfahren, vergessen Sie nicht, die heruntergeladene Datei zu löschen
Verwenden von WebDriver und Wget
Im folgenden Beispiel verwenden wir WebDriver und wget, um eine beliebte Chat-Software namens Yahoo Messenger herunterzuladen. Unsere Basis-URL lautet http://demo.guru99.com/test/yahoo.html.
Schritt 1
Importieren Sie das Paket "java.io.IOException", da wir später in Schritt 4 eine IOException abfangen müssen.
Schritt 2
Verwenden Sie getAttribute (), um den "href" -Wert des Download-Links abzurufen und als String-Variable zu speichern. In diesem Fall haben wir die Variable als "sourceLocation" bezeichnet.
Schritt 3
Richten Sie die Syntax für wget mit dem folgenden Befehl ein.
Schritt 4
Starten Sie den Download-Vorgang, indem Sie wget über unseren WebDriver-Code aufrufen.
Zusammenfassend kann Ihr WebDriver-Code wie folgt aussehen.
Paket newproject;import java.io.IOException;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;öffentliche Klasse PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/yahoo.html";WebDriver-Treiber = neuer FirefoxDriver ();driver.get (baseUrl);WebElement downloadButton = driver.findElement (By.id ("Messenger-Download"));String sourceLocation = downloadButton.getAttribute ("href");String wget_command = "cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate" + sourceLocation;Versuchen {Process exec = Runtime.getRuntime (). Exec (wget_command);int exitVal = exec.waitFor ();System.out.println ("Exit value: + exitVal);} catch (InterruptedException | IOException ex) {System.out.println (ex.toString ());}}driver.close ();}}}}
Überprüfen Sie nach dem Ausführen dieses Codes Ihr Laufwerk D und stellen Sie sicher, dass das Yahoo Messenger-Installationsprogramm dort erfolgreich heruntergeladen wurde.
Zusammenfassung
- Das Hochladen von Dateien in WebDriver erfolgt einfach mit der sendKeys () -Methode im Eingabefeld für die Dateiauswahl, um den Pfad zu der hochzuladenden Datei einzugeben.
- WebDriver kann das Herunterladen von Dateien nicht selbst automatisieren.
- Der einfachste Weg, Dateien mit WebDriver herunterzuladen, ist die Verwendung von Wget.