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.

  • ๐Ÿ“ค Upload-Methode: Verwenden Sie sendKeys() beim Dateieingabeelement, um den absoluten Dateipfad einzugeben, ohne auf Durchsuchen zu klicken.
  • ๐Ÿ“ฅ Downloadpfad: Konfigurieren Sie ein benutzerdefiniertes Downloadverzeichnis รผber ChromeOptions oder CDP Page.setDownloadBehavior in Selenium 4.
  • ๐ŸชŸ Native Dialoge: AutoIt-Skripte oder java.awt.Robot werden ausgelรถst, wenn der Dateiauswahldialog des Betriebssystems die Interaktion mit WebDriver blockiert.
  • ๐Ÿค– KI-Unterstรผtzung: Generative KI schlรคgt Selektoren vor, erstellt Testdatendateien und รผberprรผft automatisch die Integritรคt heruntergeladener Dateien.
  • ๐Ÿ›ก๏ธ Validierungsprรผfung: Bestรคtigen Sie den erfolgreichen Upload anhand von Antwortnachrichten und รผberprรผfen Sie die Downloads mithilfe der DateigrรถรŸe oder eines Prรผfsummenvergleichs.

So laden Sie eine Datei hoch und laden sie herunter Selenium

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.

Datei hochladen in Selenium
Behandeln Sie das Popup zum Hochladen von Dateien in Selenium Webtreiber

Nehmen wir an, wir mรถchten die Datei โ€žC:\newhtml.htmlโ€œ hochladen. Unser WebDriver-Code sollte wie der unten gezeigte aussehen.

Paket neues Projekt;
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.

Datei hochladen in Selenium

Beachten Sie beim Hochladen von Dateien in WebDriver die folgenden zwei Dinge:

  1. Das Klicken auf die Schaltflรคche โ€žDurchsuchenโ€œ muss nicht simuliert werden. WebDriver fรผgt den Dateipfad automatisch in das Dateiauswahlfeld ein. Element.
  2. Beim Festlegen des Dateipfads in Ihrem Java IDE, verwenden Sie das richtige Escape-Zeichen fรผr den Backslash.

Datei hochladen in Selenium

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โ€œ.

upload.au3 โ€“ wartet auf den ร–ffnen-Dialog und gibt den Dateipfad ein
WinWaitActive("ร–ffnen")
Schicken(โ€žC:\newhtml.htmlโ€œ)
Schicken("{EINGEBEN}")

Von Java, den Helfer nach dem Klick auf โ€žDurchsuchenโ€œ auslรถsen:

driver.findElement(By.id(โ€žbrowseBtnโ€œ)).klicken();
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.

Wget einrichten

Schritt 2) ร–ffnen Sie Run durch Drรผcken der Taste Windows Taste + โ€žRโ€œ drรผcken; โ€žcmdโ€œ eingeben und auf OK klicken.

Wget einrichten

Geben Sie den Befehl โ€žcd /โ€œ ein, um zum Stammverzeichnis zu wechseln.

Wget einrichten

Schritt 3) Geben Sie den Befehl ein, um zu รผberprรผfen, ob die angegebene Konfiguration funktioniert.

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

Wget einrichten

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.

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

Wget einrichten

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.

Verwenden von WebDriver und Wget

Schritt 1) Importieren Sie das Paket โ€žjava.io.IOExceptionโ€œ, da wir spรคter in Schritt 4 eine IOException abfangen mรผssen.

Verwenden von WebDriver und Wget

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.

Verwenden von WebDriver und Wget

Schritt 3) Richten Sie die Syntax fรผr wget mit dem folgenden Befehl ein.

Verwenden von WebDriver und Wget

Schritt 4) Starten Sie den Download-Vorgang, indem Sie wget รผber unseren WebDriver-Code aufrufen.

Verwenden von WebDriver und Wget

Zusammenfassend kรถnnte Ihr WebDriver-Code wie folgt aussehen:

Paket neues Projekt;
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.

Verwenden von WebDriver und Wget

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.

Chrome-Treiber Fahrer = neu ChromeDriver();
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.

Hรคufig gestellte Fragen

Selenium ruft sendKeys() auf dem Element mit dem absoluten Dateipfad. Der Browser fรผllt das Feld direkt aus, sodass sich kein Dateiauswahldialog des Betriebssystems รถffnet und kein Klick auf โ€žDurchsuchenโ€œ erforderlich ist.

Wenn die Seite kein Dateiauswahlfeld bereitstellt, verwenden Sie AutoIt. Windows oder der Klasse java.awt.Robot. Diese Tools geben den Pfad in das Dialogfeld des aktiven Betriebssystems ein und drรผcken die Eingabetaste, nachdem auf die Schaltflรคche โ€žDurchsuchenโ€œ geklickt wurde.

Rufen Sie executeCdpCommand(โ€œPage.setDownloadBehaviorโ€, params) auf, wobei behavior auf allow und downloadPath auf Ihren Ordner gesetzt ist. Selenium 4 leitet den Befehl an die Chrome-Entwicklertools weiter und die Aufforderung โ€žSpeichern unterโ€œ wird รผbersprungen.

Ja. KI-Assistenten lesen Ihr Upload-Formular, schlagen Selektoren vor, generieren Testdateien (z. B. leere, zu groรŸe oder falsch konfigurierte Dateien) und schreiben den `sendKeys()`-Block. Dadurch verkรผrzt sich die Einrichtungszeit und es werden Randfรคlle aufgedeckt, die menschlichen Testern oft entgehen.

AI-Werkzeuge Das System รผberwacht den Zielordner, vergleicht DateigrรถรŸe und Prรผfsumme mit den erwarteten Werten und markiert Abweichungen. Bildverarbeitungsmodelle kรถnnen sogar PDFs oder Bilder รถffnen und bestรคtigen, dass der Inhalt mit der Linkbezeichnung รผbereinstimmt, wodurch die manuelle รœberprรผfung bei Regressionslรคufen entfรคllt.

Wget umgeht den Browser vollstรคndig und speichert die Datei direkt รผber die Kommandozeile auf der Festplatte. Es ist nรผtzlich auf รคlteren Systemen. Selenium 2 oder 3 Setups, bei denen die Download-Einstellungen fรผr CDP und ChromeOptions nicht verfรผgbar sind.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: