Hur man laddar upp och laddar ner en fil med Selenium Webdriver
Ladda upp fil i selen
Överföring 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 kommer vi att lära oss hur man hanterar filupp- och nedladdningar.
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.
package newproject; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class PG9 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); String baseUrl = "https://demo.guru99.com/test/upload/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement uploadElement = driver.findElement(By.id("uploadfile_0")); // enter the file path onto the file-selection input field uploadElement.sendKeys("C:\\newhtml.html"); // check the "I accept the terms of service" check box driver.findElement(By.id("terms")).click(); // click the "UploadFile" button driver.findElement(By.name("send")).click(); } }
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 att följa två saker när du laddar upp filer i WebDriver
- Det finns ingen anledning att simulera klickningen på "Bläddra"-knappen. WebDriver anger automatiskt sökvägen till filvalstextrutan i element
- När du ställer in filsökvägen i din Java IDE, använd rätt escape-tecken för back-slash.
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 från steget ovan.
Steg 2) Öppna Kör genom att trycka på Windows-tangenten + "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 installationen fungerar
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Det verkar vara ett problem att skriva in i C-enheten.
Steg 4) Du måste felsöka wget-felen på kommandoraden innan du kör koden med Selenium Webdriver. Dessa fel kommer att kvarstå Eclipse och felmeddelandena kommer inte att vara lika informativa. Bäst att först få wget att fungera med hjälp av kommandoraden. Om det fungerar på kommandoraden kommer det definitivt att fungera Eclipse.
I vårt exempel, som visas i steg 3, finns det ett problem att skriva till C-enheten. Låt oss ändra nedladdningsplatsen till D-enhet och kontrollera resultaten.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Messenger laddades ned.
Glöm inte att radera den nedladdade filen innan du går vidare
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 Messenger. Vår bas-URL ska 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 erhålla "href"-värdet för nedladdningslänken och spara den som en strängvariabel. 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.
package newproject; import java.io.IOException; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class PG8 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); String baseUrl = "https://demo.guru99.com/test/yahoo.html"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement downloadButton = driver.findElement(By .id("messenger-download")); String sourceLocation = downloadButton.getAttribute("href"); String wget_command = "cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate " + sourceLocation; try { Process exec = Runtime.getRuntime().exec(wget_command); int exitVal = exec.waitFor(); System.out.println("Exit value: " + exitVal); } catch (InterruptedException | IOException ex) { System.out.println(ex.toString()); } driver.close(); } }
Efter att ha kört den här koden, kontrollera din D-enhet och verifiera att Yahoo Messenger installationsprogrammet laddades ned där.
Sammanfattning
- Överföring 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.
- WebDriver kan inte automatisera nedladdning av filer på egen hand.
- Det enklaste sättet att ladda ner filer med WebDriver är att använda Wget.