Hvordan laste opp og laste ned en fil ved hjelp av Selenium
โก Smart oppsummering
Last opp og last ned fil ved hjelp av Selenium WebDriver-arbeidsflyter er avhengige av innebygde sendKeys() for inndatafelt, AutoIt eller Robot for dialoger og CDP-kommandoer i Selenium 4 for รฅ angi sikre nedlastingsstier under automatiseringskjรธringer.

Opplasting av filer i WebDriver gjรธres ganske enkelt ved รฅ bruke sendKeys()-metoden i filvalgfeltet for รฅ angi banen til filen som skal lastes opp. I denne veiledningen lรฆrer du hvordan du hรฅndterer filopplastinger og -nedlastinger ved hjelp av Selenium WebDriver.
Hvordan laste opp fil i Selenium
For denne delen vil vi bruke https://demo.guru99.com/test/upload/ som vรฅr testapplikasjon. Denne siden lar alle besรธkende enkelt laste opp filer uten at de trenger รฅ registrere seg.

La oss si at vi รธnsker รฅ laste opp filen "C:\newhtml.html". Vรฅr WebDriver-kode skal vรฆre som den som vises nedenfor.
importere org.openqa.selen.*;
importere org.openqa.selenium.firefox.FirefoxDrivere;
offentlig klasse PG9 {
offentlig statisk tomrom hoved(String[] argumenter) {
System.setProperty(ยซwebdriver.gecko.driverยป,ยซC:\\geckodriver.exeยป);
String baseUrl = ยซhttps://demo.guru99.com/test/upload/ยป;
webdriver sjรฅfรธr = nytt FirefoxSjรฅfรธr();
driver.get(baseUrl);
WebElement uploadElement = driver.findElement(Av.id(ยซopplastingsfil_0ยป));
// skriv inn filbanen i filvalgfeltet
uploadElement.sendKeys(ยซC:\\nyhtml.htmlยป);
// kryss av i boksen ยซJeg godtar tjenestevilkรฅreneยป
driver.finnElement(Av.id("vilkรฅr")).klikk();
// klikk pรฅ knappen ยซLast opp filยป
driver.finnElement(Etter.navn("sende")).klikk();
}
}
Etter รฅ ha kjรธrt dette skriptet, bรธr du vรฆre i stand til รฅ laste opp filen, og du bรธr fรฅ en melding som ligner pรฅ denne.
Husk fรธlgende to ting nรฅr du laster opp filer i WebDriver:
- Det er ikke nรธdvendig รฅ simulere klikket pรฅ ยซBla gjennomยป-knappen. WebDriver skriver automatisk inn filbanen i tekstboksen for filvalg. element.
- Nรฅr du angir filbanen i din Java IDE, bruk det riktige escape-tegnet for back-slash.
Hรฅndtering av opplastingsdialoger uten input med AutoIt
Nรฅr siden bruker en tilpasset Bla gjennom-knapp i stedet for en innebygd knapp elementet, sendKeys() fungerer ikke. I sรฅ fall kan du kalle et AutoIt-skript fra Selenium for รฅ skrive inn filbanen i OS-dialogboksen og trykk Enter.
Lagre skriptet nedenfor som upload.au3, kompiler den til upload.exe, og deretter kalle den opp fra Java etter รฅ ha klikket pรฅ Bla gjennom-knappen.
VinnVentAktiv("ร pen")
Sende(ยซC:\newhtml.htmlยป)
Sende("{Gร }")
Fra Java, utlรธs hjelperen etter Bla gjennom-klikket:
Runtime.getRuntime().exec(ยซC:\\AutoIt\\upload.exeยป);
java.awt.Robot-klassen er en ren-Java alternativ nรฅr AutoIt ikke er tilgjengelig, selv om AutoIt er mer pรฅlitelig pรฅ Windows fordi den venter pรฅ dialogen etter tittel.
Hvordan laste ned en fil i Selenium Webdriver
WebDriver har ingen mulighet til รฅ fรฅ tilgang til nedlastingsdialogboksene presentert av nettlesere nรฅr du klikker pรฅ en nedlastingslenke eller -knapp. Imidlertid kan vi omgรฅ disse dialogboksene ved รฅ bruke et eget program kalt "wget".
Hva er Wget?
Wget er et lite og brukervennlig kommandolinjeprogram som brukes til รฅ automatisere nedlastinger. I utgangspunktet vil vi fรฅ tilgang til Wget fra WebDriver-skriptet vรฅrt for รฅ utfรธre nedlastingsprosessen.
Setter opp Wget
Trinn 1) I C Drive, opprett en ny mappe og navngi den som "Wget".
Last ned wget.exe herfra og plasser den i Wget-mappen du opprettet i trinnet ovenfor.
Trinn 2) ร pne Kjรธr ved รฅ trykke pรฅ Windows tast + ยซRยป; skriv inn ยซcmdยป og klikk OK.
Skriv inn kommandoen ยซcd /ยป for รฅ flytte til rotkatalogen.
Trinn 3) Skriv inn kommandoen for รฅ sjekke om det gitte oppsettet fungerer.
Det ser ut til รฅ vรฆre et problem รฅ skrive inn i C-stasjonen.
Trinn 4) Du mรฅ feilsรธke wget-feilene i kommandolinjen fรธr du kjรธrer koden ved hjelp av Selenium WebDriver. Disse feilene vil vedvare i Eclipse og feilmeldingene vil ikke vรฆre like informative. Det er best รฅ fรธrst fรฅ wget til รฅ fungere ved hjelp av kommandolinjen. Hvis det fungerer i kommandolinjen, vil det definitivt fungere i Eclipse.
I vรฅrt eksempel, som vist i trinn 3, er det et problem med รฅ skrive til C-stasjonen. La oss endre nedlastingsstedet til D-stasjonen og sjekke resultatene.
Messenger ble lastet ned.
Fรธr du gรฅr videre, ikke glem รฅ slette den nedlastede filen.
Bruker WebDriver og Wget
I det fรธlgende eksempelet vil vi bruke WebDriver og wget for รฅ laste ned en populรฆr chatprogramvare kalt Yahoo MessengerVรฅr base URL skal vรฆre https://demo.guru99.com/test/yahoo.html.
Trinn 1) Importer "java.io.IOException"-pakken fordi vi mรฅ fange et IOException senere i trinn 4.
Trinn 2) Bruk getAttribute() for รฅ hente ยซhrefยป-verdien til nedlastingslenken og lagre den som en strengvariabel. I dette tilfellet kalte vi variabelen ยซsourceLocationยป.
Trinn 3) Sett opp syntaksen for wget ved รฅ bruke fรธlgende kommando.
Trinn 4) Start nedlastingsprosessen ved รฅ ringe wget fra vรฅr WebDriver-kode.
For รฅ oppsummere det hele, kan WebDriver-koden din se ut som den som vises nedenfor.
importere java.io.IOException;
importere org.openqa.selen.*;
importere org.openqa.selenium.firefox.FirefoxDrivere;
offentlig klasse PG8 {
offentlig statisk tomrom hoved(String[] argumenter) {
System.setProperty(ยซwebdriver.gecko.driverยป,ยซC:\\geckodriver.exeยป);
String baseUrl = ยซhttps://demo.guru99.com/test/yahoo.htmlยป;
webdriver sjรฅfรธr = nytt FirefoxSjรฅfรธr();
driver.get(baseUrl);
WebElement nedlastingsknapp = driver.finnElement(Av.id(ยซMessenger-nedlastingยป));
String kildePlasering = downloadButton.getAttribute(ยซhrefยป);
String wget_kommando = "cmd /c C:\\Wget\\wget.exe -PD: โingen-sjekk-sertifikat" + kildeSted;
prรธve {
Prosess exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println("Utgangsverdi:" + exitVal);
} รฅ fange (AvbruttUntak | IO Unntak f.eks.) {
System.out.println(ex.toString());
}
sjรฅfรธr.lukk();
}
}
Etter รฅ ha utfรธrt denne koden, kontroller D-stasjonen og kontroller at Yahoo Messenger installasjonsprogrammet ble lastet ned der.
Angi en tilpasset nedlastingssti med Selenium 4 CDP
Selenium 4 eksponerer Chrome DevTools-protokollen, som lar deg kontrollere nedlastingsatferden i nettleseren uten tredjepartsverktรธy. Kodeutdraget nedenfor peker alle nedlastinger til en egendefinert mappe og hopper over Lagre som-ledeteksten, slik at filene havner der testen forventer dem.
kart<String,Objekt> parametere = nytt HashMap<>();
params.put("oppfรธrsel", "tillate");
params.put(ยซnedlastingsstiยป, ยซD:\\selen-nedlastingerยป);
driver.executeCdpCommand(ยซPage.setDownloadBehaviorยป, parametere);
sjรฅfรธr.get(ยซhttps://demo.guru99.com/test/yahoo.htmlยป);
driver.finnElement(Av.id(ยซMessenger-nedlastingยป)).klikk();
Du kan bekrefte nedlastingen ved รฅ avstemme mรฅlkatalogen for det forventede filnavnet og sjekke stรธrrelsen, noe som gjรธr testen deterministisk uten eksterne skript.












