So laden Sie eine Datei hoch und laden sie herunter Selenium
โก Intelligente Zusammenfassung
Dateien hochladen und herunterladen mit Selenium WebDriver-Workflows verwenden die native sendKeys()-Funktion fรผr Eingabefelder, AutoIt oder Robot fรผr Dialoge und CDP-Befehle in Selenium 4. Sichere Downloadpfade wรคhrend der Automatisierungsausfรผhrung festlegen.

Dateien in WebDriver werden hochgeladen, indem man einfach die Methode `sendKeys()` im Dateiauswahlfeld verwendet, um den Pfad der hochzuladenden Datei anzugeben. In diesem Tutorial lernen Sie, wie Sie mit Datei-Uploads und -Downloads umgehen. Selenium WebDriver.
So laden Sie eine Datei hoch Selenium
Fรผr diesen Abschnitt verwenden wir https://demo.guru99.com/test/upload/ als unsere Testanwendung. Auf dieser Website kann jeder Besucher problemlos Dateien hochladen, ohne dass er sich anmelden muss.

Nehmen wir an, wir mรถchten die Datei โC:\newhtml.htmlโ hochladen. Unser WebDriver-Code sollte wie der unten gezeigte aussehen.
importieren org.openqa.selenium.*;
importieren org.openqa.selenium.firefox.FirefoxTreiber;
รffentliche Klasse PG9 {
รถffentliche statische Leere hauptsรคchlich(Schnur[] args) {
System.setProperty(โwebdriver.gecko.driverโ,โC:\\geckodriver.exeโ);
Schnur baseUrl = โhttps://demo.guru99.com/test/upload/โ;
WebTreiber Fahrer = neu FirefoxTreiber();
driver.get(baseUrl);
WebElement uploadElement = driver.findElement(By.id(โuploadfile_0โ));
// Geben Sie den Dateipfad in das Dateiauswahlfeld ein.
uploadElement.sendKeys(โC:\\newhtml.htmlโ);
// Aktivieren Sie das Kontrollkรคstchen โIch akzeptiere die Nutzungsbedingungenโ.
driver.findElement(By.id("Bedingungen")).klicken();
// Klicken Sie auf die Schaltflรคche โDatei hochladenโ.
driver.findElement(By.name("schicken")).klicken();
}
}
Nachdem Sie dieses Skript ausgefรผhrt haben, sollten Sie die Datei erfolgreich hochladen kรถnnen und eine Meldung รคhnlich dieser erhalten.
Beachten Sie beim Hochladen von Dateien in WebDriver die folgenden zwei Dinge:
- Das Klicken auf die Schaltflรคche โDurchsuchenโ muss nicht simuliert werden. WebDriver fรผgt den Dateipfad automatisch in das Dateiauswahlfeld ein. Element.
- Beim Festlegen des Dateipfads in Ihrem Java IDE, verwenden Sie das richtige Escape-Zeichen fรผr den Backslash.
Umgang mit Upload-Dialogen ohne Eingabe mit AutoIt
Wenn die Seite eine benutzerdefinierte Schaltflรคche zum Durchsuchen anstelle einer nativen Schaltflรคche verwendet Die Funktion `sendKeys()` des Elements funktioniert nicht. In diesem Fall kรถnnen Sie ein AutoIt-Skript aufrufen. Selenium Um den Dateipfad in das Dialogfeld des Betriebssystems einzugeben, drรผcken Sie die Eingabetaste.
Speichern Sie das folgende Skript unter upload.au3, kompilieren Sie es zu upload.exedann rufen Sie es auf von Java nach dem Klicken auf die Schaltflรคche โDurchsuchenโ.
WinWaitActive("รffnen")
Schicken(โC:\newhtml.htmlโ)
Schicken("{EINGEBEN}")
Von Java, den Helfer nach dem Klick auf โDurchsuchenโ auslรถsen:
Laufzeit.getRuntime().exec(โC:\\AutoIt\\upload.exeโ);
Die Klasse java.awt.Robot ist ein reinerJava Alternative, wenn AutoIt nicht verfรผgbar ist, obwohl AutoIt zuverlรคssiger ist auf Windows weil es auf den Dialog anhand des Titels wartet.
So laden Sie eine Datei herunter in Selenium Webtreiber
WebDriver hat keinen Zugriff auf die Download-Dialogfelder von Browsern angezeigt, 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 auf Ihrem Laufwerk C einen neuen Ordner und nennen Sie ihn โWgetโ.
Laden Sie wget.exe herunter von hier und legen Sie es in den Wget-Ordner, den Sie im vorherigen Schritt erstellt haben.
Schritt 2) รffnen Sie Run durch Drรผcken der Taste Windows Taste + โRโ drรผcken; โcmdโ eingeben und auf OK klicken.
Geben Sie den Befehl โcd /โ ein, um zum Stammverzeichnis zu wechseln.
Schritt 3) Geben Sie den Befehl ein, um zu รผberprรผfen, ob die angegebene Konfiguration funktioniert.
Es scheint ein Problem beim Schreiben auf Laufwerk C zu geben.
Schritt 4) Sie mรผssen die wget-Fehler in der Befehlszeile beheben, bevor Sie den Code ausfรผhren. Selenium WebDriver. Diese Fehler werden weiterhin bestehen. Eclipse Die Fehlermeldungen sind dann weniger aussagekrรคftig. Am besten testen Sie wget zunรคchst รผber die Kommandozeile. Wenn es in der Kommandozeile funktioniert, funktioniert es definitiv auch in der Kommandozeile. Eclipse.
In unserem Beispiel, wie in Schritt 3 gezeigt, tritt ein Problem beim Schreiben auf Laufwerk C auf. รndern wir den Download-Speicherort auf Laufwerk D und รผberprรผfen wir das Ergebnis.
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 herunterzuladen MessengerUnsere Basis URL sind https://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 zu ermitteln und ihn als String-Variable zu speichern. In diesem Fall haben wir die Variable โsourceLocationโ genannt.
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 kรถnnte Ihr WebDriver-Code wie folgt aussehen:
importieren java.io.IOException;
importieren org.openqa.selenium.*;
importieren org.openqa.selenium.firefox.FirefoxTreiber;
รffentliche Klasse PG8 {
รถffentliche statische Leere hauptsรคchlich(Schnur[] args) {
System.setProperty(โwebdriver.gecko.driverโ,โC:\\geckodriver.exeโ);
Schnur baseUrl = โhttps://demo.guru99.com/test/yahoo.htmlโ;
WebTreiber Fahrer = neu FirefoxTreiber();
driver.get(baseUrl);
WebElement downloadButton = driver.findElement(By.id(โMessenger-Downloadโ));
Schnur sourceLocation = downloadButton.getAttribute(โhrefโ);
Schnur wget_command = โcmd /c C:\\Wget\\wget.exe -PD: โno-check-certificate โ + Quellort;
versuchen {
Prozess exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println(โAusgangswert: โ + exitVal);
} Fang (Unterbrochene Ausnahme | IOException ex) {
System.out.println(ex.toString());
}
driver.close();
}
}
Nachdem Sie diesen Code ausgefรผhrt haben, รผberprรผfen Sie Ihr Laufwerk D und vergewissern Sie sich, dass das Yahoo Messenger Das Installationsprogramm wurde dort erfolgreich heruntergeladen.
Festlegen eines benutzerdefinierten Downloadpfads mit Selenium 4 CDP
Selenium Version 4 stellt das Chrome DevTools-Protokoll bereit, mit dem sich das Downloadverhalten des Browsers ohne Drittanbieter-Tools steuern lรคsst. Der folgende Codeausschnitt leitet alle Downloads in einen benutzerdefinierten Ordner um und รผberspringt die โSpeichern unterโ-Abfrage, sodass die Dateien dort landen, wo der Test sie erwartet.
Karte<Schnur,Betreff> params = neu HashMap<>();
params.put("Verhalten", "ermรถglichen");
params.put(โDownloadpfadโ, โD:\\selenium-downloadsโ);
driver.executeCdpCommand(โPage.setDownloadBehaviorโ, Parameter);
Treiber.get(โhttps://demo.guru99.com/test/yahoo.htmlโ);
driver.findElement(By.id(โMessenger-Downloadโ)).klicken();
Sie kรถnnen den Download รผberprรผfen, indem Sie das Zielverzeichnis auf den erwarteten Dateinamen und dessen Grรถรe abfragen. Dadurch wird der Test ohne externe Skripte deterministisch.












