Hur man laddar upp och laddar ner en fil med Selenium
โก Smart sammanfattning
Ladda upp och ladda ner filen med hjรคlp av Selenium WebDriver-arbetsflรถden fรถrlitar sig pรฅ inbyggda sendKeys()-kommandon fรถr inmatningsfรคlt, AutoIt eller Robot fรถr dialogrutor och CDP-kommandon i Selenium 4 fรถr att stรคlla in sรคkra nedladdningsvรคgar under automatiseringskรถrningar.

Uppladdning av filer i WebDriver gรถrs genom att helt enkelt anvรคnda metoden sendKeys() i inmatningsfรคltet fรถr filval fรถr att ange sรถkvรคgen till filen som ska laddas upp. I den hรคr handledningen lรคr du dig hur du hanterar filuppladdningar och nedladdningar med hjรคlp av Selenium WebDriver.
Hur man laddar upp fil i Selenium
Fรถr det hรคr avsnittet kommer vi att anvรคnda https://demo.guru99.com/test/upload/ som vรฅr testapplikation. Den hรคr webbplatsen lรฅter alla besรถkare enkelt ladda upp filer utan att de behรถver registrera sig.

Lรฅt oss sรคga att vi vill ladda upp filen "C:\newhtml.html". Vรฅr WebDriver-kod bรถr vara som den som visas nedan.
importera org.openqa.selen.*;
importera org.openqa.selenium.firefox.FirefoxFรถrare;
allmรคn klass PG9 {
offentligt statiskt tomrum huvud(Strรคng[] argument) {
System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
Strรคng baseUrl = โhttps://demo.guru99.com/test/upload/โ;
webbdrivrutin fรถrare = ny FirefoxFรถrare();
drivrutin.get(baseUrl);
WebElement uploadElement = driver.findElement(Av.id("uppladdningsfil_0"));
// ange sรถkvรคgen till filen i inmatningsfรคltet fรถr filval
uploadElement.sendKeys("C:\\newhtml.html");
// markera kryssrutan "Jag accepterar anvรคndarvillkoren"
drivrutin.findElement(Av.id("villkor")).klick();
// klicka pรฅ knappen โLadda upp filโ
drivrutin.findElement(Efter.namn("skicka")).klick();
}
}
Efter att ha kรถrt det hรคr skriptet bรถr du kunna ladda upp filen och du bรถr fรฅ ett meddelande som liknar detta.
Kom ihรฅg fรถljande tvรฅ saker nรคr du laddar upp filer i WebDriver:
- Det finns ingen anledning att simulera klickningen pรฅ knappen "Blรคddra". WebDriver anger automatiskt filsรถkvรคgen i textrutan fรถr filval. element.
- Nรคr du stรคller in filsรถkvรคgen i din Java IDE, anvรคnd rรคtt escape-tecken fรถr back-slash.
Hantera dialogrutor fรถr uppladdning utan inmatning med AutoIt
Nรคr sidan anvรคnder en anpassad blรคddringsknapp istรคllet fรถr en inbyggd knapp elementet, sendKeys() fungerar inte. I sรฅ fall kan du anropa ett AutoIt-skript frรฅn Selenium fรถr att skriva in sรถkvรคgen till filen i operativsystemets dialogruta och tryck pรฅ Enter.
Spara skriptet nedan som uppladdning.au3, kompilera den till upload.exeoch anropa den sedan frรฅn Java efter att du klickat pรฅ knappen Blรคddra.
VinstVรคntaAktiv("รppna")
Skicka("C:\newhtml.html")
Skicka("{SKRIVA IN}")
Frรฅn Java, utlรถs hjรคlpprogrammet efter Blรคddra-klicket:
Runtime.getRuntime().exec("C:\\AutoIt\\upload.exe");
java.awt.Robot-klassen รคr en ren-Java alternativ nรคr AutoIt inte รคr tillgรคngligt, รคven om AutoIt รคr mer tillfรถrlitligt pรฅ Windows eftersom den vรคntar pรฅ dialogen efter titel.
Hur man laddar ner en fil i Selenium Webdriver
WebDriver har ingen mรถjlighet att komma รฅt dialogrutorna fรถr nedladdning presenteras av webblรคsare nรคr du klickar pรฅ en nedladdningslรคnk eller -knapp. Men vi kan kringgรฅ dessa dialogrutor med hjรคlp av ett separat program som heter "wget".
Vad รคr Wget?
Wget รคr ett litet och lรคttanvรคnt kommandoradsprogram som anvรคnds fรถr att automatisera nedladdningar. I grund och botten kommer vi รฅt Wget frรฅn vรฅrt WebDriver-skript fรถr att utfรถra nedladdningsprocessen.
Konfigurera Wget
Steg 1) Pรฅ din C Drive, skapa en ny mapp och namnge den som "Wget".
Ladda ner wget.exe hรคrifrรฅn och placera den i Wget-mappen som du skapade i steget ovan.
Steg 2) รppna Kรถr genom att trycka pรฅ Windows tangent + "R"; skriv "cmd" och klicka pรฅ OK.
Skriv in kommandot "cd /" fรถr att flytta till rotkatalogen.
Steg 3) Skriv in kommandot fรถr att kontrollera om den givna instรคllningen fungerar.
Det verkar vara ett problem att skriva in i C-enheten.
Steg 4) Du mรฅste felsรถka wget-felen i kommandoraden innan du kรถr koden med Selenium WebDriver. Dessa fel kommer att kvarstรฅ i Eclipse och felmeddelandena kommer inte att vara lika informativa. Det รคr bรคst att fรถrst fรฅ wget att fungera med hjรคlp av kommandoraden. Om det fungerar i kommandoraden kommer det definitivt att fungera i Eclipse.
I vรฅrt exempel, som visas i steg 3, finns det ett problem med att skriva till C-enheten. Lรฅt oss รคndra nedladdningsplatsen till D-enheten och kontrollera resultaten.
Messenger laddades ned.
Innan du fortsรคtter, glรถm inte att radera den nedladdade filen.
Anvรคnder WebDriver och Wget
I fรถljande exempel kommer vi att anvรคnda WebDriver och wget fรถr att ladda ner en populรคr chattmjukvara som heter Yahoo MessengerVรฅr bas URL skall vara https://demo.guru99.com/test/yahoo.html.
Steg 1) Importera "java.io.IOException"-paketet eftersom vi mรฅste fรฅnga en IOException senare i steg 4.
Steg 2) Anvรคnd getAttribute() fรถr att hรคmta vรคrdet โhrefโ fรถr nedladdningslรคnken och spara det som en String-variabel. I det hรคr fallet dรถpte vi variabeln till โsourceLocationโ.
Steg 3) Stรคll in syntaxen fรถr wget med fรถljande kommando.
Steg 4) Starta nedladdningsprocessen genom att anropa wget frรฅn vรฅr WebDriver-kod.
Fรถr att sammanfatta allt kan din WebDriver-kod se ut som den som visas nedan.
importera java.io.IOException;
importera org.openqa.selen.*;
importera org.openqa.selenium.firefox.FirefoxFรถrare;
allmรคn klass PG8 {
offentligt statiskt tomrum huvud(Strรคng[] argument) {
System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
Strรคng baseUrl = โhttps://demo.guru99.com/test/yahoo.htmlโ;
webbdrivrutin fรถrare = ny FirefoxFรถrare();
drivrutin.get(baseUrl);
WebElement nedladdningsknapp = drivrutin.findElement(Av.id("messenger-nedladdning"));
Strรคng kรคllplats = downloadButton.getAttribute("href");
Strรคng wget_kommando = "cmd /c C:\\Wget\\wget.exe -PD: โno-check-certificate" + kรคllaPlats;
prova {
Behandla exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println("Utgรฅngsvรคrde:" + exitVal);
} fรฅngst (Avbruten undantag | IO-undantag t.ex.) {
System.out.println(ex.toString());
}
drivrutin.stรคng();
}
}
Efter att ha kรถrt den hรคr koden, kontrollera din D-enhet och verifiera att Yahoo Messenger installationsprogrammet laddades ned dรคr.
Stรคlla in en anpassad nedladdningssรถkvรคg med Selenium 4 CDP
Selenium 4 exponerar Chrome DevTools-protokollet, som lรฅter dig kontrollera webblรคsarens nedladdningsbeteende utan verktyg frรฅn tredje part. Kodavsnittet nedan pekar alla nedladdningar till en anpassad mapp och hoppar รถver prompten Spara som, sรฅ att filerna landar dรคr testet fรถrvรคntar sig dem.
Karta<Strรคng,รndamรฅlet> parametrar = ny HashMap<>();
params.put("beteende", "tillรฅta");
params.put("nedladdningssรถkvรคg", "D:\\selenium-nedladdningar");
drivrutin.executeCdpCommand("Page.setDownloadBehavior", parametrar);
drivrutin.get(โhttps://demo.guru99.com/test/yahoo.htmlโ);
drivrutin.findElement(Av.id("messenger-nedladdning")).klick();
Du kan verifiera nedladdningen genom att avsรถka mรฅlkatalogen fรถr det fรถrvรคntade filnamnet och kontrollera dess storlek, vilket gรถr testet deterministiskt utan externa skript.












