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.

Ř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.
Při nahrávání souborů do WebDriveru pamatujte na následující dvě věci
- 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
- Při nastavování cesty k souboru ve vašem Java IDE, použijte správný znak escape pro zpětné lomítko.
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.
Krok 2) Otevřete Spustit stisknutím kláves windows + „R“ ; zadejte „cmd a klikněte na OK
Zadejte příkaz „cd /“ pro přesun do kořenového adresáře
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
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
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.
Krok 1) Importujte balíček „java.io.IOException“, protože později v kroku 4 budeme muset zachytit IOException.
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“.
Krok 3) Nastavte syntaxi pro wget pomocí následujícího příkazu.
Krok 4) Spusťte proces stahování voláním wget z našeho kódu WebDriver.
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.
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.