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.

  • 📤 Način prijenosa: Koristite sendKeys() na elementu za unos datoteke kako biste unijeli apsolutnu putanju datoteke bez klika na Pregledaj.
  • 📥 Put preuzimanja: Konfigurirajte prilagođeni direktorij za preuzimanje putem ChromeOptions ili CDP Page.setDownloadBehavior u Selenium 4.
  • 🪟 Izvorni dijalozi: Pokreće AutoIt skripte ili java.awt.Robot kada alat za odabir datoteka operativnog sustava blokira interakciju s WebDriverom.
  • 🤖 AI pomoć: Generativna umjetna inteligencija predlaže selektore, izrađuje testne datoteke s podacima i automatski provjerava integritet preuzetih datoteka.
  • 🛡️ Provjera valjanosti: Potvrdite uspjeh prijenosa putem odgovornih poruka i provjerite preuzimanja usporedbom veličine datoteke ili kontrolnog zbroja.

Kako prenijeti i preuzeti datoteku pomoću Selenium

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.

Učitaj datoteku Selenium
Rukovanje skočnim prozorom za prijenos datoteke Selenium Webdriver

Recimo da želimo učitati datoteku “C:\newhtml.html”. Naš WebDriver kod trebao bi biti poput onog prikazanog u nastavku.

paket novi projekt;
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.

Učitaj datoteku Selenium

Prilikom prijenosa datoteka u WebDriver imajte na umu sljedeće dvije stvari:

  1. Nema potrebe simulirati klik na gumb "Pregledaj". WebDriver automatski unosi putanju datoteke u tekstualni okvir za odabir datoteke element.
  2. Prilikom postavljanja putanje datoteke u vašem Java IDE, koristite ispravan izlazni znak za kosu crtu unatrag.

Učitaj datoteku Selenium

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.

; upload.au3 – čeka dijalog Otvori i upisuje putanju datoteke
WinWaitActive("Otvoren")
Poslati(„C:\newhtml.html“)
Poslati("{ENTER}")

Od Java, pokrenite pomoćnika nakon klika na Pregledaj:

driver.findElement(By.id("BrowseBtn")).klik();
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.

Postavljanje Wget-a

Korak 2) Otvorite Run pritiskom na Windows tipka + “R”; upišite “cmd” i kliknite U redu.

Postavljanje Wget-a

Upišite naredbu "cd /" za premještanje u korijenski direktorij.

Postavljanje Wget-a

Korak 3) Upišite naredbu kako biste provjerili radi li zadana postavka.

cmd /c C:\\Wget\\wget.exe -PC: –nema-provjere-certifikata https://demo.guru99.com/selenium/msgr11us.exe

Postavljanje Wget-a

Č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.

cmd /c C:\\Wget\\wget.exe -PD: –bez provjere certifikata https://demo.guru99.com/selenium/msgr11us.exe

Postavljanje Wget-a

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.

Korištenje WebDrivera i Wgeta

Korak 1) Uvezite paket "java.io.IOException" jer ćemo kasnije u 4. koraku morati uhvatiti IOException.

Korištenje WebDrivera i Wgeta

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".

Korištenje WebDrivera i Wgeta

Korak 3) Postavite sintaksu za wget pomoću sljedeće naredbe.

Korištenje WebDrivera i Wgeta

Korak 4) Pokrenite proces preuzimanja pozivom wget iz našeg WebDriver koda.

Korištenje WebDrivera i Wgeta

Da sve sažmemo, vaš WebDriver kod bi mogao izgledati kao ovaj prikazan ispod.

paket novi projekt;
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.

Korištenje WebDrivera i Wgeta

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.

ChromeDriver vozač = novi ChromeDriver();
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.

Pitanja i odgovori

Selenium poziva sendKeys() na element s apsolutnom putanjom datoteke. Preglednik izravno ispunjava polje, tako da se ne otvara alat za odabir datoteka OS-a i nije potreban klik na Pregledaj.

Kada stranica ne prikazuje unos datoteke, koristite AutoIt na Windows ili klasu java.awt.Robot. Ovi alati upisuju putanju u aktivni dijalog operativnog sustava i pritiskaju Enter nakon što se klikne gumb Pregledaj.

Pozovite executeCdpCommand(“Page.setDownloadBehavior”, params) s ponašanjem postavljenim na dopusti i downloadPath postavljenim na vašu mapu. Selenium 4 prosljeđuje naredbu Chrome DevToolsima, a upit Spremi kao se preskače.

Da. AI asistenti čitaju vaš obrazac za prijenos, predlažu selektore, generiraju granične datoteke poput praznih, prevelikih ili uzoraka s pogrešnom ekstenzijom i pišu blok sendKeys(). To skraćuje vrijeme postavljanja i otkriva rubne slučajeve koje ljudski testeri često propuštaju.

AI alati provjeriti ciljnu mapu, usporediti veličinu datoteke i kontrolni zbroj s očekivanim vrijednostima te označiti neusklađenosti. Modeli vida mogu čak otvoriti PDF-ove ili slike i potvrditi da se sadržaj podudara s oznakom veze, uklanjajući ručni pregled iz regresijskih izvođenja.

Wget u potpunosti zaobilazi preglednik i sprema datoteku izravno na disk putem naredbenog retka. Koristan je na starijim verzijama sustava. Selenium 2 ili 3 postavke gdje postavke preuzimanja CDP-a i ChromeOptionsa nisu dostupne.

Sažmite ovu objavu uz: