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.

  • ๐Ÿ“ค Uppladdningsmetod: Anvรคnd sendKeys() pรฅ filens inmatningselement fรถr att skicka den absoluta filsรถkvรคgen utan att klicka pรฅ Blรคddra.
  • ๐Ÿ“ฅ Nedladdningssรถkvรคg: Konfigurera en anpassad nedladdningskatalog via ChromeOptions eller CDP Page.setDownloadBehavior i Selenium 4.
  • ๐ŸชŸ Inbyggda dialogrutor: Utlรถs AutoIt-skript eller java.awt.Robot nรคr operativsystemets filvรคljare blockerar WebDriver frรฅn att interagera.
  • ๐Ÿค– AI-hjรคlp: Generativ AI fรถreslรฅr selektorer, bygger testdatafiler och validerar automatiskt integriteten hos nedladdade filer.
  • ๐Ÿ›ก๏ธ Valideringskontroll: Bekrรคfta att uppladdningen lyckades via svarsmeddelanden och verifiera nedladdningar med hjรคlp av filstorleks- eller kontrollsummejรคmfรถrelse.

Hur man laddar upp och laddar ner en fil med Selenium

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.

Ladda upp fil i Selenium
Hantera filuppladdning popup i Selenium Webdriver

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.

paket nytt projekt;
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.

Ladda upp fil i Selenium

Kom ihรฅg fรถljande tvรฅ saker nรคr du laddar upp filer i WebDriver:

  1. Det finns ingen anledning att simulera klickningen pรฅ knappen "Blรคddra". WebDriver anger automatiskt filsรถkvรคgen i textrutan fรถr filval. element.
  2. Nรคr du stรคller in filsรถkvรคgen i din Java IDE, anvรคnd rรคtt escape-tecken fรถr back-slash.

Ladda upp fil i Selenium

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.

upload.au3 โ€“ vรคntar pรฅ dialogrutan ร–ppna och skriver in sรถkvรคgen till filen
VinstVรคntaAktiv("ร–ppna")
Skicka("C:\newhtml.html")
Skicka("{SKRIVA IN}")

Frรฅn Java, utlรถs hjรคlpprogrammet efter Blรคddra-klicket:

drivrutin.findElement(Av.id("BlรคddraBtn")).klick();
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.

Konfigurera Wget

Steg 2) ร–ppna Kรถr genom att trycka pรฅ Windows tangent + "R"; skriv "cmd" och klicka pรฅ OK.

Konfigurera Wget

Skriv in kommandot "cd /" fรถr att flytta till rotkatalogen.

Konfigurera Wget

Steg 3) Skriv in kommandot fรถr att kontrollera om den givna instรคllningen fungerar.

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

Konfigurera Wget

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.

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

Konfigurera Wget

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.

Anvรคnder WebDriver och Wget

Steg 1) Importera "java.io.IOException"-paketet eftersom vi mรฅste fรฅnga en IOException senare i steg 4.

Anvรคnder WebDriver och Wget

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

Anvรคnder WebDriver och Wget

Steg 3) Stรคll in syntaxen fรถr wget med fรถljande kommando.

Anvรคnder WebDriver och Wget

Steg 4) Starta nedladdningsprocessen genom att anropa wget frรฅn vรฅr WebDriver-kod.

Anvรคnder WebDriver och Wget

Fรถr att sammanfatta allt kan din WebDriver-kod se ut som den som visas nedan.

paket nytt projekt;
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.

Anvรคnder WebDriver och Wget

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.

ChromeDriver fรถrare = ny ChromeDriver();
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.

Vanliga frรฅgor

Selenium anropar sendKeys() pรฅ element med den absoluta sรถkvรคgen. Webblรคsaren fyller i fรคltet direkt, sรฅ ingen OS-filvรคljare รถppnas och inget klick pรฅ Blรคddra behรถvs.

Nรคr sidan inte visar nรฅgon filinmatning, anvรคnd AutoIt pรฅ Windows eller klassen java.awt.Robot. Dessa verktyg skriver in sรถkvรคgen i den aktiva operativsystemdialogrutan och trycker pรฅ Enter nรคr du har klickat pรฅ knappen Blรคddra.

Anropa executeCdpCommand("Page.setDownloadBehavior", params) med beteendet instรคllt pรฅ allow och downloadPath instรคllt pรฅ din mapp. Selenium 4 vidarebefordrar kommandot till Chrome DevTools och prompten Spara som hoppas รถver.

Ja. AI-assistenter lรคser ditt uppladdningsformulรคr, fรถreslรฅr selektorer, genererar grรคnsfiler som tomma, รถverdimensionerade eller felaktiga exempel och skriver sendKeys()-blocket. Detta fรถrkortar installationstiden och avslรถjar edge-fall som mรคnskliga testare ofta missar.

AI-verktyg avsรถka mรฅlmappen, jรคmfรถra filstorlek och kontrollsumma med fรถrvรคntade vรคrden och flagga felmatchningar. Visionsmodeller kan till och med รถppna PDF-filer eller bilder och bekrรคfta att innehรฅllet matchar lรคnketiketten, vilket tar bort manuell granskning frรฅn regressionskรถrningar.

Wget kringgรฅr webblรคsaren helt och sparar filen direkt till disken via en kommandoradsprocess. Det รคr anvรคndbart pรฅ รคldre system. Selenium 2 eller 3 instรคllningar dรคr nedladdningsinstรคllningarna fรถr CDP och ChromeOptions inte รคr tillgรคngliga.

Sammanfatta detta inlรคgg med: