Kako prenijeti i preuzeti datoteku pomoću Selenium
⚡ Pametni sažetak
Prenesite i preuzmite datoteku pomoću Selenium WebDriverovi tijekovi rada oslanjaju se na izvorni sendKeys() za polja za unos, AutoIt ili Robot za dijaloge i CDP naredbe u Selenium 4 za postavljanje sigurnih putova preuzimanja tijekom automatizacije.

Prijenos datoteka u WebDriver vrši se jednostavnim korištenjem metode sendKeys() u polju za odabir datoteke kako biste unijeli putanju datoteke koju želite prenijeti. U ovom vodiču naučit ćete kako se nositi s prijenosom i preuzimanjem datoteka pomoću Selenium WebDriver.
Kako učitati datoteku u Selenium
Za ovaj odjeljak koristit ćemo https://demo.guru99.com/test/upload/ kao našu testnu aplikaciju. Ova stranica jednostavno omogućuje bilo kojem posjetitelju učitavanje datoteka bez potrebe da se prijavi.

Recimo da želimo učitati datoteku “C:\newhtml.html”. Naš WebDriver kod trebao bi biti poput onog prikazanog u nastavku.
uvoz org.openqa.selenium.*;
uvoz org.openqa.selenium.firefox.FirefoxVozači;
javni stalež PG9 {
javna statična praznina glavni(Niz[] argumenti) {
System.setProperty(„webdriver.gecko.driver“,„C:\\geckodriver.exe“);
Niz osnovniUrl = „https://demo.guru99.com/test/upload/“;
webdriver vozač = novi FirefoxVozač();
driver.get(baseUrl);
WebElement uploadElement = driver.findElement(By.id(„uploadfile_0“));
// unesite putanju datoteke u polje za unos odabira datoteke
uploadElement.sendKeys(„C:\\newhtml.html“);
// označite potvrdni okvir "Prihvaćam uvjete pružanja usluge"
driver.findElement(By.id("Pojmovi")).klik();
// kliknite gumb "Prenesi datoteku"
driver.findElement(Po.nazivu("poslati")).klik();
}
}
Nakon pokretanja ove skripte, trebali biste moći uspješno učitati datoteku i trebali biste dobiti poruku sličnu ovoj.
Prilikom prijenosa datoteka u WebDriver imajte na umu sljedeće dvije stvari:
- Nema potrebe simulirati klik na gumb "Pregledaj". WebDriver automatski unosi putanju datoteke u tekstualni okvir za odabir datoteke element.
- Prilikom postavljanja putanje datoteke u vašem Java IDE, koristite ispravan izlazni znak za kosu crtu unatrag.
Obrada dijaloga za prijenos bez unosa pomoću AutoIt-a
Kada stranica koristi prilagođeni gumb Pregledaj umjesto nativnog element, sendKeys() ne radi. U tom slučaju možete pozvati AutoIt skriptu iz Selenium upišite putanju datoteke u dijalog OS-a i pritisnite Enter.
Spremite skriptu ispod kao upload.au3, kompajlirajte ga u upload.exe, a zatim ga pozovite iz Java nakon klika na gumb Pregledaj.
WinWaitActive("Otvoren")
Poslati(„C:\newhtml.html“)
Poslati("{ENTER}")
Od Java, pokrenite pomoćnika nakon klika na Pregledaj:
dužina trajanja.getRuntime().exec(„C:\\AutoIt\\upload.exe“);
Klasa java.awt.Robot je čista-Java alternativa kada AutoIt nije dostupan, iako je AutoIt pouzdaniji na Windows jer čeka dijalog po naslovu.
Kako preuzeti datoteku u Selenium Webdriver
WebDriver nema mogućnost pristupa dijaloškim okvirima za preuzimanje prikazuju preglednici kada kliknete na vezu ili gumb za preuzimanje. Međutim, te dijaloške okvire možemo zaobići pomoću zasebnog programa pod nazivom "wget".
Što je Wget?
Wget je mali program naredbenog retka jednostavan za korištenje koji se koristi za automatiziranje preuzimanja. Uglavnom, pristupit ćemo Wgetu iz naše WebDriver skripte kako bismo izvršili postupak preuzimanja.
Postavljanje Wget-a
Korak 1) Na vašem C pogonu stvorite novu mapu i nazovite je "Wget".
Preuzmite wget.exe odavde i stavite ga u Wget mapu koju ste stvorili u gornjem koraku.
Korak 2) Otvorite Run pritiskom na Windows tipka + “R”; upišite “cmd” i kliknite U redu.
Upišite naredbu "cd /" za premještanje u korijenski direktorij.
Korak 3) Upišite naredbu kako biste provjerili radi li zadana postavka.
Čini se da postoji problem s pisanjem na C pogon.
Korak 4) Morate otkloniti greške wgeta u naredbenom retku prije nego što izvršite kod pomoću Selenium WebDriver. Ove će se pogreške nastaviti u Eclipse i poruke o pogreškama neće biti toliko informativne. Najbolje je prvo pokrenuti wget pomoću naredbenog retka. Ako radi u naredbenom retku, sigurno će raditi i u Eclipse.
U našem primjeru, kao što je prikazano u koraku 3, postoji problem s pisanjem na C pogon. Promijenimo lokaciju preuzimanja na D pogon i provjerimo rezultate.
Messenger je uspješno preuzeto.
Prije nego što nastavite dalje, ne zaboravite izbrisati preuzetu datoteku.
Korištenje WebDrivera i Wgeta
U sljedećem primjeru koristit ćemo WebDriver i wget za preuzimanje popularnog softvera za chat koji se zove Yahoo MessengerNaša baza URL će biti https://demo.guru99.com/test/yahoo.html.
Korak 1) Uvezite paket "java.io.IOException" jer ćemo kasnije u 4. koraku morati uhvatiti IOException.
Korak 2) Upotrijebite getAttribute() za dobivanje vrijednosti "href" poveznice za preuzimanje i spremite je kao varijablu tipa String. U ovom slučaju, varijablu smo nazvali "sourceLocation".
Korak 3) Postavite sintaksu za wget pomoću sljedeće naredbe.
Korak 4) Pokrenite proces preuzimanja pozivom wget iz našeg WebDriver koda.
Da sve sažmemo, vaš WebDriver kod bi mogao izgledati kao ovaj prikazan ispod.
uvoz java.io.IOException;
uvoz org.openqa.selenium.*;
uvoz org.openqa.selenium.firefox.FirefoxVozači;
javni stalež PG8 {
javna statična praznina glavni(Niz[] argumenti) {
System.setProperty(„webdriver.gecko.driver“,„C:\\geckodriver.exe“);
Niz osnovniUrl = „https://demo.guru99.com/test/yahoo.html“;
webdriver vozač = novi FirefoxVozač();
driver.get(baseUrl);
WebElement preuzimanjeGumb = driver.findElement(By.id("preuzimanje putem messengera"));
Niz IzvornaLokacija = Gumb za preuzimanje.dobiAtribut("href");
Niz wget_command = „cmd /c C:\\Wget\\wget.exe -PD: –nema-provjere-certifikata“ + izvorLokacija;
pokušati {
Proces exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println("Izlazna vrijednost:" + exitVal);
} ulov (Prekinuta iznimka | IOException npr.) {
System.out.println(npr.toString());
}
vozač.zatvori();
}
}
Nakon izvršavanja ovog koda, provjerite svoj D pogon i provjerite je li Yahoo Messenger instalacijski program je tamo uspješno preuzet.
Postavljanje prilagođene putanje preuzimanja pomoću Selenium 4 CDP
Selenium 4 otkriva Chrome DevTools protokol, koji vam omogućuje kontrolu ponašanja preuzimanja u pregledniku bez alata trećih strana. Isječak u nastavku usmjerava sva preuzimanja u prilagođenu mapu i preskače upit Spremi kao, tako da datoteke završavaju tamo gdje ih test očekuje.
Karta<Niz,Objekt> parametri = novi HashMap<>();
params.put("ponašanje", "dopusti");
params.put("PutanjaPreuzimanja", „D:\\selenium-preuzimanja“);
driver.executeCdpCommand("Ponašanje pri preuzimanju postavki stranice", parametri);
driver.get(„https://demo.guru99.com/test/yahoo.html“);
driver.findElement(By.id("preuzimanje putem messengera")).klik();
Preuzimanje možete provjeriti ispitivanjem ciljnog direktorija za očekivani naziv datoteke i provjerom njezine veličine, što test čini determinističkim bez vanjskih skripti.












