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.

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.

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.

Ladda upp fil i Selenium

Kom ihåg att följa två saker när du laddar upp filer i WebDriver

  1. Det finns ingen anledning att simulera klickningen på "Bläddra"-knappen. WebDriver anger automatiskt sökvägen till filvalstextrutan i 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

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.

Konfigurera Wget

Steg 2) Öppna Kör genom att trycka på Windows-tangenten + "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 installationen fungerar

cmd /c C:\\Wget\\wget.exe -P C: --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 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

Konfigurera Wget

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.

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 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".

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.

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.

Använder WebDriver och Wget

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.