Sådan uploader og downloader du en fil ved hjælp af Selenium Webdriver
Upload fil i selen
Upload af filer i WebDriver sker ved blot at bruge sendKeys()-metoden i filvælger-indtastningsfeltet for at indtaste stien til den fil, der skal uploades.
I denne tutorial lærer vi, hvordan du håndterer filuploads og -downloads.
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.
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 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 at følge to ting, når du uploader filer i WebDriver
- Der er ingen grund til at simulere et klik på "Gennemse"-knappen. WebDriver indtaster automatisk filstien i filvalgstekstboksen i element
- Når du indstiller filstien i din Java IDE, brug det korrekte escape-tegn til back-slash.
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 Wget-mappen, du oprettede fra ovenstående trin.
Trin 2) Åbn Kør ved at trykke på Windows-tasten + "R" ; skriv "cmd og klik ok
Indtast kommandoen "cd /" for at flytte til rodmappen
Trin 3) Indtast kommandoen for at kontrollere, om den givne opsætning fungerer
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Der ser ud til at være et problem med at skrive ind i C-drevet.
Trin 4) Du skal debugge wget-fejlene på kommandolinjen, før du udfører koden ved hjælp af Selenium Webdriver. Disse fejl vil fortsætte Eclipse og fejlmeddelelserne vil ikke være så informative. Bedste for først at få wget til at fungere ved hjælp af kommandolinjen. Hvis det virker i kommandolinjen, vil det helt sikkert fungere Eclipse.
I vores eksempel, som vist i trin 3, er der et problem med at skrive ind i C-drevet. Lad os ændre downloadplaceringen til D-drev og tjekke resultaterne.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Messenger blev downloadet.
Inden du går videre, så glem ikke 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 Messenger. Vores basis-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 af downloadlinket og gemme det som en strengvariabel. I dette tilfælde navngav vi variablen som "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.
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(); } }
Når du har udført denne kode, skal du kontrollere dit D-drev og kontrollere, at Yahoo Messenger installationsprogrammet blev downloadet der.
Resumé
- Upload af filer i WebDriver sker ved blot at bruge sendKeys()-metoden i filvælger-indtastningsfeltet for at indtaste stien til den fil, der skal uploades.
- WebDriver kan ikke automatisere download af filer alene.
- Den nemmeste måde at downloade filer ved hjælp af WebDriver er at bruge Wget.