Cum să încărcați și să descărcați un fișier folosind Selenium
⚡ Rezumat inteligent
Încărcați și descărcați fișierul folosind Selenium Fluxurile de lucru WebDriver se bazează pe sendKeys() nativ pentru câmpurile de introducere, AutoIt sau Robot pentru dialoguri și comenzi CDP în Selenium 4 pentru a seta căi de descărcare sigure în timpul rulărilor automate.

Încărcarea fișierelor în WebDriver se face pur și simplu utilizând metoda sendKeys() în câmpul de introducere a fișierelor pentru a introduce calea către fișierul care urmează să fie încărcat. În acest tutorial, veți învăța cum să gestionați încărcările și descărcările de fișiere folosind Selenium WebDriver.
Cum să încărcați fișierul în Selenium
Pentru această secțiune, vom folosi https://demo.guru99.com/test/upload/ ca aplicația noastră de testare. Acest site permite cu ușurință oricărui vizitator să încarce fișiere fără a fi necesar să se înregistreze.

Să presupunem că dorim să încărcăm fișierul „C:\newhtml.html”. Codul nostru WebDriver ar trebui să fie ca cel prezentat mai jos.
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxȘoferi;
clasa publica PG9 {
vid static public principal(Şir[] argumente) {
System.setProperty(„webdriver.gecko.driver”,„C:\\geckodriver.exe”);
Şir URL de bază = „https://demo.guru99.com/test/upload/”;
webdriver șofer = nou FirefoxȘofer();
driver.get(baseUrl);
Element Web uploadElement = driver.findElement(By.id()„încărcare_fișier_0”));
// introduceți calea fișierului în câmpul de introducere a fișierelor
uploadElement.sendKeys(„C:\\htmlnou.html”);
// bifați caseta „Accept termenii și condițiile de utilizare”
driver.findElement(By.id("termeni")).clic();
// faceți clic pe butonul „Încărcare fișier”
driver.findElement(După.nume("trimite")).clic();
}
}
După rularea acestui script, ar trebui să puteți încărca fișierul cu succes și ar trebui să primiți un mesaj similar cu acesta.
Rețineți următoarele două lucruri atunci când încărcați fișiere în WebDriver:
- Nu este nevoie să simulați apăsarea butonului „Răsfoire”. WebDriver introduce automat calea fișierului în caseta de text de selectare a fișierului din element.
- Când setați calea fișierului în dvs Java IDE, utilizați caracterul de escape adecvat pentru back-slash.
Gestionarea dialogurilor de încărcare fără date de intrare cu AutoIt
Când pagina folosește un buton de navigare personalizat în loc de unul nativ elementul, sendKeys() nu funcționează. În acest caz, puteți apela un script AutoIt din Selenium pentru a introduce calea fișierului în caseta de dialog a sistemului de operare și apăsați Enter.
Salvați scriptul de mai jos ca încărcare.au3, compilați-l la încărcare.exe, apoi invocați-l din Java după ce se face clic pe butonul Răsfoire.
WinWaitActive("Deschis")
Trimite(„C:\htmlnou.html”)
Trimite(„{ENTER}”)
De la Java, declanșează instrumentul auxiliar după clicul pe Răsfoire:
Runtime.getRuntime().exec(„C:\\AutoIt\\upload.exe”);
Clasa java.awt.Robot este o clasă pură-Java alternativă atunci când AutoIt nu este disponibil, deși AutoIt este mai fiabil pe Windows deoarece așteaptă dialogul după titlu.
Cum să descărcați un fișier în Selenium Webdriver
WebDriver nu are capacitatea de a accesa casetele de dialog Descărcare prezentate de browsere atunci când faceți clic pe un link sau un buton de descărcare. Cu toate acestea, putem ocoli aceste casete de dialog folosind un program separat numit „wget”.
Ce este Wget?
Wget este un program de linie de comandă mic și ușor de utilizat, folosit pentru automatizarea descărcărilor. Practic, vom accesa Wget din scriptul nostru WebDriver pentru a efectua procesul de descărcare.
Configurarea Wget
Pas 1) În unitatea C, creați un folder nou și denumiți-l ca „Wget”.
Descărcați wget.exe de aici și plasați-l în folderul Wget pe care l-ați creat în pasul de mai sus.
Pas 2) Deschideți Executare apăsând Windows tasta + „R”; tastați „cmd” și faceți clic pe OK.
Tastați comanda „cd /” pentru a vă muta în directorul rădăcină.
Pas 3) Tastați comanda pentru a verifica dacă configurația dată funcționează.
Se pare că există o problemă la scrierea pe unitatea C.
Pas 4) Trebuie să depanați erorile wget în linia de comandă înainte de a executa codul folosind Selenium WebDriver. Aceste erori vor persista în Eclipse și mesajele de eroare nu vor fi la fel de informative. Cel mai bine este să porniți wget mai întâi folosind linia de comandă. Dacă funcționează în linia de comandă, cu siguranță va funcționa și în Eclipse.
În exemplul nostru, așa cum se arată în Pasul 3, există o problemă la scrierea pe unitatea C. Să schimbăm locația de descărcare pe unitatea D și să verificăm rezultatele.
Messenger a fost descărcat cu succes.
Înainte de a continua, nu uitați să ștergeți fișierul descărcat.
Folosind WebDriver și Wget
În exemplul următor, vom folosi WebDriver și wget pentru a descărca un software de chat popular numit Yahoo MessengerBaza noastră URL ar trebui sa fie https://demo.guru99.com/test/yahoo.html.
Pas 1) Importați pachetul „java.io.IOException” deoarece va trebui să prindem o IOException mai târziu în Pasul 4.
Pas 2) Folosește getAttribute() pentru a obține valoarea „href” a linkului de descărcare și a o salva ca o variabilă de tip String. În acest caz, am numit variabila „sourceLocation”.
Pas 3) Configurați sintaxa pentru wget folosind următoarea comandă.
Pas 4) Inițiază procesul de descărcare apelând wget din codul nostru WebDriver.
Pentru a rezuma totul, codul dvs. WebDriver ar putea arăta ca cel prezentat mai jos.
import java.io.IOException;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxȘoferi;
clasa publica PG8 {
vid static public principal(Şir[] argumente) {
System.setProperty(„webdriver.gecko.driver”,„C:\\geckodriver.exe”);
Şir URL de bază = „https://demo.guru99.com/test/yahoo.html”;
webdriver șofer = nou FirefoxȘofer();
driver.get(baseUrl);
Element Web descărcareButton = driver.findElement(By.id()„descărcare messenger”));
Şir sursăLocație = descărcareButton.getAttribute(„href”);
Şir wget_command = „cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate” + sursăLocație;
încerca {
Etape exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println(„Valoare de ieșire:” + exitVal);
} captură (Excepție întreruptă | IOException ex.) {
System.out.println(ex.toString());
}
driver.close();
}
}
După executarea acestui cod, verificați unitatea D și verificați dacă Yahoo Messenger programul de instalare a fost descărcat cu succes acolo.
Setarea unei căi de descărcare personalizate cu Selenium 4 CDP
Selenium Versiunea 4 expune protocolul Chrome DevTools, care vă permite să controlați comportamentul de descărcare al browserului fără instrumente terțe. Fragmentul de mai jos direcționează toate descărcările către un folder personalizat și omite solicitarea „Salvare ca”, astfel încât fișierele ajung acolo unde testul le așteaptă.
Hartă<Şir,Obiect> parametri = nou HashMap<>();
params.put("comportament", "permite");
params.put(„Cale de descărcare”, „D:\\selenium-downloads”);
driver.executăCdpCommand(„Page.setDownloadBehavior”, parametri);
driver.get(„https://demo.guru99.com/test/yahoo.html”);
driver.findElement(By.id(„descărcare messenger”)).clic();
Puteți verifica descărcarea interogând directorul țintă pentru numele de fișier așteptat și verificând dimensiunea acestuia, ceea ce face ca testul să fie determinist fără scripturi externe.












