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

⚡ Chytré shrnutí

Nahrát a stáhnout soubor pomocí Selenium Pracovní postupy WebDriveru se spoléhají na nativní funkci sendKeys() pro vstupní pole, AutoIt nebo Robot pro dialogy a příkazy CDP v Selenium 4 pro nastavení bezpečných cest stahování během automatizovaných běhů.

  • 📤 Způsob nahrání: Použijte funkci sendKeys() na vstupním elementu souboru pro vložení absolutní cesty k souboru bez kliknutí na tlačítko Procházet.
  • 📥 Cesta ke stažení: Nakonfigurujte vlastní adresář pro stahování pomocí ChromeOptions nebo CDP Page.setDownloadBehavior v Selenium 4.
  • 🪟 Nativní dialogy: Spustí skripty AutoIt nebo java.awt.Robot, když výběr souborů operačního systému blokuje interakci WebDriveru.
  • 🤖 Asistence AI: Generativní umělá inteligence navrhuje selektory, vytváří testovací datové soubory a automaticky ověřuje integritu stažených souborů.
  • 🛡️ Ověřovací kontrola: Potvrďte úspěšnost nahrání pomocí odpovědí a ověřte stahování pomocí porovnání velikosti souboru nebo kontrolního součtu.

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

Nahrávání souborů ve WebDriveru se provádí jednoduše pomocí metody sendKeys() v poli pro výběr souboru, kde se zadá cesta k souboru, který se má nahrát. V tomto tutoriálu se naučíte, jak pracovat s nahráváním a stahováním souborů pomocí... Selenium WebDriver.

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.

balíček novýprojekt;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxŘidiči;
veřejná třída PG9 {
veřejná statická prázdnota hlavní(Řetězec[] argumenty) {
System.setProperty(„webdriver.gecko.driver“,„C:\\geckodriver.exe“);
Řetězec základníUrl = „https://demo.guru99.com/test/upload/“;
webový ovladač řidič = nový FirefoxŘidič();

driver.get(základníUrl);
WebElement nahrátElement = driver.findElement(By.id(„uploadfile_0“));

// zadejte cestu k souboru do vstupního pole pro výběr souboru
uploadElement.sendKeys(„C:\\newhtml.html“);

// zaškrtněte políčko „Souhlasím s podmínkami služby“
driver.findElement(By.id("podmínky")).kliknout();

// klikneme na tlačítko „Nahrát soubor“
driver.findElement(Podle.name("poslat")).kliknout();
}
}

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 nezapomeňte 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

Zpracování dialogových oken pro nahrávání bez vstupu pomocí AutoIt

Když stránka používá vlastní tlačítko Procházet místo nativní ikony element, sendKeys() nefunguje. V takovém případě můžete zavolat skript AutoIt z Selenium zadejte cestu k souboru do dialogového okna operačního systému a stiskněte klávesu Enter.

Uložte níže uvedený skript jako upload.au3, zkompilujte to do upload.exe, poté jej vyvolejte z Java po kliknutí na tlačítko Procházet.

; upload.au3 – čeká na dialogové okno Otevřít a zadá cestu k souboru
WinWaitActive("Otevřeno")
Poslat(„C:\newhtml.html“)
Poslat(„{ENTER}“)

od Java, spustí pomocníka po kliknutí na tlačítko Procházet:

driver.findElement(By.id(„BrowseBtn“)).kliknout();
Runtime.getRuntime().exec(„C:\\AutoIt\\upload.exe“);

Třída java.awt.Robot je čistě-Java alternativa, když AutoIt není k dispozici, ačkoli AutoIt je spolehlivější na Windows protože čeká na dialog podle názvu.

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 Windows klávesa + „R“; zadejte „cmd“ a klikněte na OK.

Nastavení Wget

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

Nastavení Wget

Krok 3) Zadejte příkaz pro kontrolu, zda dané nastavení funguje.

cmd /c C:\\Wget\\wget.exe -PC: –bez-kontroly-certifikátu 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) Před spuštěním kódu pomocí je třeba v příkazovém řádku ladit chyby wgetu. Selenium WebDriver. Tyto chyby budou přetrvávat v 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, bude to určitě fungovat i v Eclipse.

V našem příkladu, jak je znázorněno v kroku 3, je problém se zápisem na disk C. Změňme umístění stahování na disk D a podívejme se na výsledky.

cmd /c C:\\Wget\\wget.exe -PD: –bez-kontroly-certifikátu https://demo.guru99.com/selenium/msgr11us.exe

Nastavení Wget

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

Než budete pokračovat, 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 MessengerNaše základna 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í funkce getAttribute() získáte hodnotu „href“ odkazu ke stažení a uložíte ji jako proměnnou typu String. V tomto případě jsme proměnnou pojmenovali „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.

balíček novýprojekt;
import java.io.IOException;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxŘidiči;
veřejná třída PG8 {
veřejná statická prázdnota hlavní(Řetězec[] argumenty) {

System.setProperty(„webdriver.gecko.driver“,„C:\\geckodriver.exe“);
Řetězec základníUrl = „https://demo.guru99.com/test/yahoo.html“;
webový ovladač řidič = nový FirefoxŘidič();

driver.get(základníUrl);
WebElement downloadButton = driver.findElement(By.id(„stažení z aplikace Messenger“));
Řetězec sourceLocation = downloadButton.getAttribute(„href“);
Řetězec wget_command = „cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate“ + zdrojUmístění;

vyzkoušet {
Proces exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println(„Výstupní hodnota:“ + exitVal);
} úlovek (Přerušená výjimka | IOException např.) {
System.out.println(např.toString());
}
řidič.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

Nastavení vlastní cesty pro stahování pomocí Selenium 4 CDP

Selenium Verze 4 zpřístupňuje protokol Chrome DevTools, který umožňuje ovládat chování stahování v prohlížeči bez nástrojů třetích stran. Následující úryvek kódu přesměruje všechna stahování do vlastní složky a přeskakuje výzvu Uložit jako, takže soubory se dostanou tam, kde je test očekává.

ChromeDriver řidič = nový ChromeDriver();
Mapa<Řetězec,Objekt> parametry = nový HashMap<>();
params.vložit("chování", "dovolit");
params.vložit(„Cesta ke stažení“, „D:\\selenium-downloads“);
ovladač.executeCdpCommand(„Chování při stahování stránky“, parametry);
ovladač.get(„https://demo.guru99.com/test/yahoo.html“);
driver.findElement(By.id(„stažení z aplikace Messenger“)).kliknout();

Stažení můžete ověřit dotazováním cílového adresáře na očekávaný název souboru a kontrolou jeho velikosti, což test činí deterministickým bez externích skriptů.

Nejčastější dotazy

Selenium volá sendKeys() na element s absolutní cestou k souboru. Prohlížeč vyplní pole přímo, takže se neotevírá žádný výběr souborů v operačním systému a není potřeba kliknout na tlačítko Procházet.

Pokud stránka nezobrazuje vstupní soubor, použijte AutoIt. Windows nebo třídu java.awt.Robot. Tyto nástroje zadají cestu do aktivního dialogového okna operačního systému a po kliknutí na tlačítko Procházet stiskněte klávesu Enter.

Zavolejte executeCdpCommand(“Page.setDownloadBehavior”, params) s behavior nastaveným na allow a downloadPath nastaveným na vaši složku. Selenium Verze 4 přepošle příkaz do Chrome DevTools a výzva Uložit jako se přeskočí.

Ano. Asistenti umělé inteligence čtou váš formulář pro nahrávání, navrhují selektory, generují hraniční soubory, jako jsou prázdné, nadměrně velké nebo vzorky s nesprávnou příponou, a zapisují blok sendKeys(). To zkracuje dobu nastavení a odhaluje okrajové případy, které lidští testeři často přehlížejí.

Nástroje AI dotazovat cílovou složku, porovnávat velikost souboru a kontrolní součet s očekávanými hodnotami a označovat neshody. Modely vidění dokáží dokonce otevírat PDF soubory nebo obrázky a ověřit, zda obsah odpovídá popisku odkazu, čímž se eliminuje ruční kontrola z regresních běhů.

Wget zcela obchází prohlížeč a ukládá soubor přímo na disk pomocí příkazového řádku. Je užitečný na starších systémech. Selenium 2 nebo 3 nastavení, kde nejsou k dispozici předvolby stahování CDP a ChromeOptions.

Shrňte tento příspěvek takto: