Jak nahrát a stáhnout soubor pomocí Selenium Webdriver

Nahrajte soubor v selenu

Nahrávání souborů do WebDriveru se provádí jednoduše pomocí metody sendKeys() ve vstupním poli pro výběr souboru k zadání cesty k souboru, který se má nahrát.

V tomto tutoriálu se naučíme, jak se vypořádat s nahráváním a stahováním souborů.

Jak nahrát soubor do Selenium

Pro tuto sekci použijeme https://demo.guru99.com/test/upload/ jako naše testovací aplikace. Tato stránka snadno umožňuje každému návštěvníkovi nahrávat soubory bez nutnosti registrace.

Nahrát soubor do Selenium
Zpracujte vyskakovací okno pro nahrání souboru Selenium Webdriver

Řekněme, že chceme nahrát soubor „C:\newhtml.html“. Náš kód WebDriver by měl být jako ten, který je zobrazen níže.

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

Po spuštění tohoto skriptu byste měli být schopni úspěšně nahrát soubor a měli byste dostat zprávu podobnou této.

Nahrát soubor do Selenium

Při nahrávání souborů do WebDriveru pamatujte na následující dvě věci

  1. Není třeba simulovat kliknutí na tlačítko „Procházet“. WebDriver automaticky zadá cestu k souboru do textového pole pro výběr souboru v živel
  2. Při nastavování cesty k souboru ve vašem Java IDE, použijte správný znak escape pro zpětné lomítko.

Nahrát soubor do Selenium

Jak stáhnout soubor v Selenium Webdriver

WebDriver nemá žádnou možnost přístupu k dialogovým oknům stahování zobrazí prohlížeče, když kliknete na odkaz nebo tlačítko ke stažení. Tato dialogová okna však můžeme obejít pomocí samostatného programu zvaného „wget“.

Co je Wget?

Wget je malý a snadno použitelný program příkazového řádku používaný k automatizaci stahování. V zásadě přistoupíme k Wgetu z našeho skriptu WebDriver, abychom provedli proces stahování.

Nastavení Wget

Krok 1) Na disku C vytvořte novou složku a pojmenujte ji jako „Wget“.

Stáhněte si wget.exe odtud a umístěte jej do složky Wget, kterou jste vytvořili v předchozím kroku.

Nastavení Wget

Krok 2) Otevřete Spustit stisknutím kláves windows + „R“ ; zadejte „cmd a klikněte na OK

Nastavení Wget

Zadejte příkaz „cd /“ pro přesun do kořenového adresáře

Nastavení Wget

Krok 3) Zadejte příkaz a zkontrolujte, zda dané nastavení funguje

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

Nastavení Wget

Zdá se, že došlo k problému se zápisem na jednotku C.

Krok 4) Než spustíte kód pomocí, musíte odladit chyby wget v příkazovém řádku Selenium Webdriver. Tyto chyby budou přetrvávat Eclipse a chybové zprávy nebudou tak informativní. Nejlepší je nejprve spustit wget pomocí příkazového řádku. Pokud to funguje v příkazovém řádku, určitě to bude fungovat Eclipse.

V našem příkladu, jak ukazuje krok 3, došlo k problému se zápisem na jednotku C. Změňme umístění stahování na jednotku D a zkontrolujte výsledky.

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

Nastavení Wget

Messenger byl úspěšně stažen.

Než budete pokračovat dále, nezapomeňte smazat stažený soubor

Pomocí WebDriver a Wget

V následujícím příkladu použijeme WebDriver a wget ke stažení oblíbeného chatovacího softwaru s názvem Yahoo Messenger. Naše základní adresa URL bude https://demo.guru99.com/test/yahoo.html.

Pomocí WebDriver a Wget

Krok 1) Importujte balíček „java.io.IOException“, protože později v kroku 4 budeme muset zachytit IOException.

Pomocí WebDriver a Wget

Krok 2) Pomocí getAttribute() získejte hodnotu „href“ odkazu ke stažení a uložte ji jako proměnnou String. V tomto případě jsme proměnnou pojmenovali jako „sourceLocation“.

Pomocí WebDriver a Wget

Krok 3) Nastavte syntaxi pro wget pomocí následujícího příkazu.

Pomocí WebDriver a Wget

Krok 4) Spusťte proces stahování voláním wget z našeho kódu WebDriver.

Pomocí WebDriver a Wget

Abych to všechno shrnul, váš kód WebDriver by mohl vypadat jako ten, který je zobrazen níže.

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

Po provedení tohoto kódu zkontrolujte svůj disk D a ověřte, že Yahoo Messenger tam byl úspěšně stažen instalační program.

Pomocí WebDriver a Wget

Shrnutí

  • Nahrávání souborů do WebDriveru se provádí jednoduše pomocí metody sendKeys() ve vstupním poli pro výběr souboru k zadání cesty k souboru, který se má nahrát.
  • WebDriver nemůže automatizovat stahování souborů sám o sobě.
  • Nejjednodušší způsob, jak stáhnout soubory pomocí WebDriver, je použít Wget.