Een bestand uploaden en downloaden met Selenium Webdriver

Upload bestand in selenium

Het uploaden van bestanden in WebDriver gebeurt eenvoudigweg met behulp van de methode sendKeys() in het invoerveld voor bestandsselectie om het pad in te voeren naar het bestand dat moet worden geüpload.

In deze tutorial leren we hoe om te gaan met het uploaden en downloaden van bestanden.

Hoe een bestand te uploaden in Selenium

Voor dit gedeelte zullen we gebruiken https://demo.guru99.com/test/upload/ als onze testapplicatie. Op deze site kan elke bezoeker gemakkelijk bestanden uploaden zonder dat hij zich hoeft aan te melden.

Bestand uploaden in Selenium
Behandel de pop-up voor het uploaden van bestanden in Selenium Webdriver

Stel dat we het bestand “C:\newhtml.html” willen uploaden. Onze WebDriver-code zou eruit moeten zien zoals hieronder weergegeven.

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();
        }
}

Nadat u dit script hebt uitgevoerd, zou u het bestand met succes moeten kunnen uploaden en zou u een soortgelijk bericht moeten krijgen.

Bestand uploaden in Selenium

Onthoud following twee dingen bij het uploaden van bestanden in WebDriver

  1. Het is niet nodig om het klikken op de knop “Bladeren” te simuleren. WebDriver voert automatisch het bestandspad in de bestandsselectietekst in box van de element
  2. Wanneer u het bestandspad in uw Java IDE instelt, gebruik dan het juiste escape-teken voor de back-slash.

Bestand uploaden in Selenium

Een bestand downloaden in Selenium Webdriver

WebDriver heeft geen mogelijkheid om toegang te krijgen tot het downloadvenster boxes weergegeven door browsers wanneer u op een downloadlink of -knop klikt. We kunnen deze dialoog echter omzeilen boxes met behulp van een apart programma genaamd "wget".

Wat is Wget?

Wget is een klein en eenvoudig te gebruiken opdrachtregelprogramma dat wordt gebruikt om downloads te automatiseren. Kortom, we hebben toegang tot Wget vanuit ons WebDriver-script om het downloadproces uit te voeren.

Wget instellen

Stap 1) Maak in uw C-schijf een nieuwe map en noem deze "Wget".

Wget.exe downloaden vanaf hier en plaats het in de Wget-map die u in de bovenstaande stap hebt gemaakt.

Wget instellen

Stap 2) Open Run door op de Windows-toets + "R" te drukken; typ "cmd" in en klik op ok

Wget instellen

Typ het commando “cd /” om naar de hoofdmap te gaan

Wget instellen

Stap 3) Typ het commando om te controleren of de gegeven installatie werkt

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

Wget instellen

Er lijkt een probleem te zijn bij het schrijven naar de C-schijf.

Stap 4) U moet de wget-fouten op de opdrachtregel debuggen voordat u de code uitvoert met Selenium Webdriver. Deze fouten zullen blijven bestaan Eclipse en de foutmeldingen zullen niet zo informatief zijn. Het beste is om wget eerst te laten werken via de opdrachtregel. Als het op de opdrachtregel werkt, zal het zeker ook werken Eclipse.

In ons voorbeeld, zoals getoond in stap 3, is er een probleem met het schrijven naar de C-schijf. Laten we de downloadlocatie wijzigen in D-schijf en de resultaten controleren.

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

Wget instellen

Messenger is succesvol gedownload.

Voordat u verder gaat, vergeet niet het gedownloade bestand te verwijderen

Gebruik WebDriver en Wget

In het vervolgwing We zullen bijvoorbeeld WebDriver en wget gebruiken om een ​​populaire chatsoftware genaamd Yahoo Messenger te downloaden. Onze basis-URL zal zijn https://demo.guru99.com/test/yahoo.html.

Gebruik WebDriver en Wget

Stap 1) Importeer het pakket “java.io.IOException”, omdat we later in stap 4 een IOException zullen moeten opvangen.

Gebruik WebDriver en Wget

Stap 2) Gebruik getAttribute() om de “href”-waarde van de downloadlink te verkrijgen en sla deze op als een String-variabele. In dit geval hebben we de variabele de naam ‘sourceLocation’ gegeven.

Gebruik WebDriver en Wget

Stap 3) Stel de syntaxis voor wget in met behulp van de following opdracht.

Gebruik WebDriver en Wget

Stap 4) Start het downloadproces door wget aan te roepen vanuit onze WebDriver-code.

Gebruik WebDriver en Wget

Samenvattend kan uw WebDriver-code er uitzien zoals hieronder weergegeven.

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();
        }
        
}

Nadat u deze code hebt uitgevoerd, controleert u uw D-schijf en controleert u of het Yahoo Messenger-installatieprogramma daar succesvol is gedownload.

Gebruik WebDriver en Wget

Samengevat

  • Het uploaden van bestanden in WebDriver gebeurt eenvoudigweg met behulp van de methode sendKeys() in het invoerveld voor bestandsselectie om het pad in te voeren naar het bestand dat moet worden geüpload.
  • WebDriver kan het downloaden van bestanden niet zelfstandig automatiseren.
  • De eenvoudigste manier om bestanden te downloaden met WebDriver is door Wget te gebruiken.