Hvordan laste opp og laste ned en fil ved hjelp av Selenium

Last opp fil i selen

Opplasting av filer i WebDriver gjøres ved ganske enkelt å bruke sendKeys()-metoden i filvelg-inndatafeltet for å angi banen til filen som skal lastes opp.

I denne opplæringen lærer vi hvordan du håndterer filopplastinger og nedlastinger.

Hvordan laste opp fil i Selenium

For denne delen vil vi bruke https://demo.guru99.com/test/upload/ som vår testapplikasjon. Denne siden lar alle besøkende enkelt laste opp filer uten at de trenger å registrere seg.

Last opp fil i Selenium
Håndter filopplasting popup i Selenium Webdriver

La oss si at vi ønsker å laste opp filen "C:\newhtml.html". Vår WebDriver-kode skal være som den som vises 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();
        }
}

Etter å ha kjørt dette skriptet, bør du være i stand til å laste opp filen, og du bør få en melding som ligner på denne.

Last opp fil i Selenium

Husk å følge to ting når du laster opp filer i WebDriver

  1. Det er ikke nødvendig å simulere å klikke på "Bla gjennom"-knappen. WebDriver legger automatisk inn filbanen i tekstboksen for filvalg i element
  2. Når du angir filbanen i din Java IDE, bruk det riktige escape-tegnet for back-slash.

Last opp fil i Selenium

Hvordan laste ned en fil i Selenium Webdriver

WebDriver har ingen mulighet til å få tilgang til nedlastingsdialogboksene presentert av nettlesere når du klikker på en nedlastingslenke eller -knapp. Imidlertid kan vi omgå disse dialogboksene ved å bruke et eget program kalt "wget".

Hva er Wget?

Wget er et lite og brukervennlig kommandolinjeprogram som brukes til å automatisere nedlastinger. I utgangspunktet vil vi få tilgang til Wget fra WebDriver-skriptet vårt for å utføre nedlastingsprosessen.

Setter opp Wget

Trinn 1) I C Drive, opprett en ny mappe og navngi den som "Wget".

Last ned wget.exe herfra og plasser den i Wget-mappen du opprettet fra trinnet ovenfor.

Setter opp Wget

Trinn 2) Åpne Kjør ved å trykke Windows-tasten + "R" ; skriv inn "cmd og klikk ok

Setter opp Wget

Skriv inn kommandoen "cd /" for å flytte til rotkatalogen

Setter opp Wget

Trinn 3) Skriv inn kommandoen for å sjekke om det gitte oppsettet fungerer

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

Setter opp Wget

Det ser ut til å være et problem å skrive inn i C-stasjonen.

Trinn 4) Du må feilsøke wget-feilene på kommandolinjen før du kjører koden med Selenium Webdriver. Disse feilene vil vedvare Eclipse og feilmeldingene vil ikke være like informative. Best å først få wget til å fungere ved hjelp av kommandolinjen. Hvis det fungerer på kommandolinjen, vil det definitivt fungere Eclipse.

I vårt eksempel, som vist i trinn 3, er det et problem å skrive inn i C-stasjonen. La oss endre nedlastingsstedet til D-stasjon og sjekke resultatene.

cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Setter opp Wget

Messenger ble lastet ned.

Før du fortsetter, ikke glem å slette den nedlastede filen

Bruker WebDriver og Wget

I det følgende eksempelet vil vi bruke WebDriver og wget for å laste ned en populær chatprogramvare kalt Yahoo Messenger. Vår basis-URL skal være https://demo.guru99.com/test/yahoo.html.

Bruker WebDriver og Wget

Trinn 1) Importer "java.io.IOException"-pakken fordi vi må fange et IOException senere i trinn 4.

Bruker WebDriver og Wget

Trinn 2) Bruk getAttribute() for å få "href"-verdien til nedlastingslenken og lagre den som en strengvariabel. I dette tilfellet kalte vi variabelen "sourceLocation".

Bruker WebDriver og Wget

Trinn 3) Sett opp syntaksen for wget ved å bruke følgende kommando.

Bruker WebDriver og Wget

Trinn 4) Start nedlastingsprosessen ved å ringe wget fra vår WebDriver-kode.

Bruker WebDriver og Wget

For å oppsummere det hele, kan WebDriver-koden din se ut som den som vises 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();
        }
        
}

Etter å ha utført denne koden, kontroller D-stasjonen og kontroller at Yahoo Messenger installasjonsprogrammet ble lastet ned der.

Bruker WebDriver og Wget

Sammendrag

  • Opplasting av filer i WebDriver gjøres ved ganske enkelt å bruke sendKeys()-metoden i filvelg-inndatafeltet for å angi banen til filen som skal lastes opp.
  • WebDriver kan ikke automatisere nedlasting av filer alene.
  • Den enkleste måten å laste ned filer ved hjelp av WebDriver er å bruke Wget.