Sådan uploader og downloader du en fil ved hjælp af Selenium
⚡ Smart opsummering
Upload og download fil ved hjælp af Selenium WebDriver-arbejdsgange er afhængige af native sendKeys() til inputfelter, AutoIt eller Robot til dialoger og CDP-kommandoer i Selenium 4 for at indstille sikre downloadstier under automatiseringskørsler.

Upload af filer i WebDriver gøres ved blot at bruge sendKeys()-metoden i filvalgsfeltet for at indtaste stien til den fil, der skal uploades. I denne vejledning lærer du, hvordan du håndterer filuploads og -downloads ved hjælp af Selenium WebDriver.
Sådan uploader du en fil Selenium
Til dette afsnit vil vi bruge https://demo.guru99.com/test/upload/ som vores testapplikation. Dette websted giver nemt enhver besøgende mulighed for at uploade filer uden at kræve, at de tilmelder sig.

Lad os sige, at vi ønsker at uploade filen "C:\newhtml.html". Vores WebDriver-kode skal være som den, der er vist nedenfor.
importere org.openqa.selen.*;
importere org.openqa.selenium.firefox.FirefoxChauffører;
offentlig klasse PG9 {
offentligt statisk tomrum hoved(String[] argumenter) {
System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
String baseUrl = “https://demo.guru99.com/test/upload/”;
webdriver chauffør = ny FirefoxChauffør();
driver.get(baseUrl);
WebElement uploadElement = driver.findElement(Af.id("uploadfil_0"));
// indtast filstien i inputfeltet til filvalg
uploadElement.sendKeys("C:\\nyhtml.html");
// marker afkrydsningsfeltet "Jeg accepterer servicevilkårene"
driver.findElement(By.id("betingelser")).klik();
// klik på knappen “Upload fil”
driver.findElement(Efter.navn("sende")).klik();
}
}
Efter at have kørt dette script, bør du være i stand til at uploade filen med succes, og du bør få en meddelelse, der ligner denne.
Husk følgende to ting, når du uploader filer i WebDriver:
- Der er ingen grund til at simulere klikket på knappen "Gennemse". WebDriver indtaster automatisk filstien i tekstfeltet til filvalg. element.
- Når du indstiller filstien i din Java IDE, brug det korrekte escape-tegn til back-slash.
Håndtering af uploaddialoger uden input med AutoIt
Når siden bruger en brugerdefineret browse-knap i stedet for en indbygget elementet, sendKeys() virker ikke. I så fald kan du kalde et AutoIt-script fra Selenium for at skrive filstien i OS-dialogboksen og trykke på Enter.
Gem scriptet nedenfor som upload.au3, kompiler den til upload.exe, og kald den derefter fra Java efter at have klikket på knappen Gennemse.
WinWaitAktiv("Åben")
Sende("C:\newhtml.html")
Sende("{INDTAG}")
Fra Java, udløs hjælperen efter klikket på Gennemse:
Runtime.getRuntime().exec(“C:\\AutoIt\\upload.exe”);
java.awt.Robot-klassen er en ren-Java alternativ når AutoIt ikke er tilgængelig, selvom AutoIt er mere pålidelig på Windows fordi den venter på dialogen efter titel.
Sådan downloader du en fil i Selenium Webdriver
WebDriver har ingen mulighed for at få adgang til download-dialogboksene præsenteret af browsere, når du klikker på et downloadlink eller en knap. Vi kan dog omgå disse dialogbokse ved hjælp af et separat program kaldet "wget".
Hvad er Wget?
Wget er et lille og brugervenligt kommandolinjeprogram, der bruges til at automatisere downloads. Grundlæggende vil vi få adgang til Wget fra vores WebDriver-script for at udføre downloadprocessen.
Opsætning af Wget
Trin 1) I dit C-drev skal du oprette en ny mappe og navngive den som "Wget".
Download wget.exe herfra og placer den i den Wget-mappe, du oprettede i trinnet ovenfor.
Trin 2) Åbn Kør ved at trykke på Windows tast + “R”; skriv “cmd” og klik på OK.
Skriv kommandoen "cd /" for at flytte til rodmappen.
Trin 3) Indtast kommandoen for at kontrollere, om den givne opsætning fungerer.
Der ser ud til at være et problem med at skrive ind i C-drevet.
Trin 4) Du skal fejlsøge wget-fejlene i kommandolinjen, før du udfører koden ved hjælp af Selenium WebDriver. Disse fejl vil fortsætte i Eclipse og fejlmeddelelserne vil ikke være lige så informative. Det er bedst først at få wget til at virke ved hjælp af kommandolinjen. Hvis det virker i kommandolinjen, vil det helt sikkert virke i Eclipse.
I vores eksempel, som vist i trin 3, er der et problem med at skrive til C-drevet. Lad os ændre downloadplaceringen til D-drevet og kontrollere resultaterne.
Messenger blev downloadet.
Før du fortsætter, skal du ikke glemme at slette den downloadede fil.
Brug af WebDriver og Wget
I det følgende eksempel vil vi bruge WebDriver og wget til at downloade en populær chatsoftware kaldet Yahoo MessengerVores base URL skal være https://demo.guru99.com/test/yahoo.html.
Trin 1) Importer pakken "java.io.IOException", fordi vi bliver nødt til at fange en IOException senere i trin 4.
Trin 2) Brug getAttribute() til at hente "href"-værdien for downloadlinket og gemme den som en String-variabel. I dette tilfælde har vi kaldt variablen "sourceLocation".
Trin 3) Opsæt syntaksen for wget ved hjælp af følgende kommando.
Trin 4) Start downloadprocessen ved at ringe til wget fra vores WebDriver-kode.
For at opsummere det hele kan din WebDriver-kode se ud som den, der er vist nedenfor.
importere java.io.IOException;
importere org.openqa.selen.*;
importere org.openqa.selenium.firefox.FirefoxChauffører;
offentlig klasse PG8 {
offentligt statisk tomrum hoved(String[] argumenter) {
System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
String baseUrl = “https://demo.guru99.com/test/yahoo.html”;
webdriver chauffør = ny FirefoxChauffør();
driver.get(baseUrl);
WebElement downloadButton = driver.findElement(Af.id("messenger-download"));
String kildePlacering = downloadButton.getAttribute("href");
String wget_kommando = "cmd /c C:\\Wget\\wget.exe -PD: –ingen-kontrol-certifikat" + kildePlacering;
prøv {
Proces exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println("Udgangsværdi:" + exitVærdi);
} fangst (Afbrudt undtagelse | IOUndtagelse f.eks.) {
System.out.println(ex.toString());
}
driver.luk();
}
}
Når du har udført denne kode, skal du kontrollere dit D-drev og kontrollere, at Yahoo Messenger installationsprogrammet blev downloadet der.
Indstilling af en brugerdefineret downloadsti med Selenium 4 CDP
Selenium 4 afslører Chrome DevTools-protokollen, som giver dig mulighed for at kontrollere browserens downloadadfærd uden tredjepartsværktøjer. Uddraget nedenfor peger alle downloads til en brugerdefineret mappe og springer prompten Gem som over, så filerne lander, hvor testen forventer dem.
Kort<String,Object> parametre = ny HashMap<>();
params.put("opførsel", "give lov til");
params.put("Downloadsti", "D:\\selenium-downloads");
driver.executeCdpCommand("Page.setDownloadBehavior", parametre);
chauffør.get(“https://demo.guru99.com/test/yahoo.html”);
driver.findElement(By.id("messenger-download")).klik();
Du kan bekræfte downloadningen ved at afstemme målmappen for det forventede filnavn og kontrollere dens størrelse, hvilket gør testen deterministisk uden eksterne scripts.












