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.

Upload fil i Selenium
Håndter filupload popup i Selenium Webdriver

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.

Upload fil i Selenium

Husk at følge to ting, når du uploader filer i WebDriver

  1. Der er ingen grund til at simulere et klik på "Gennemse"-knappen. WebDriver indtaster automatisk filstien i filvalgstekstboksen i element
  2. Når du indstiller filstien i din Java IDE, brug det korrekte escape-tegn til back-slash.

Upload fil i Selenium

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.

Opsætning af Wget

Trin 2) Åbn Kør ved at trykke på Windows-tasten + "R" ; skriv "cmd og klik ok

Opsætning af Wget

Indtast kommandoen "cd /" for at flytte til rodmappen

Opsætning af Wget

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

Opsætning af Wget

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

Opsætning af Wget

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.

Brug af WebDriver og Wget

Trin 1) Importer pakken "java.io.IOException", fordi vi bliver nødt til at fange en IOException senere i trin 4.

Brug af WebDriver og Wget

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

Brug af WebDriver og Wget

Trin 3) Opsæt syntaksen for wget ved hjælp af følgende kommando.

Brug af WebDriver og Wget

Trin 4) Start downloadprocessen ved at ringe til wget fra vores WebDriver-kode.

Brug af WebDriver og Wget

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.

Brug af WebDriver og Wget

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.