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.

  • 📤 Metodă de încărcare: Folosește sendKeys() pe elementul de intrare al fișierului pentru a introduce calea absolută a fișierului fără a face clic pe Răsfoire.
  • 📥 Calea de descărcare: Configurați un director de descărcare personalizat prin ChromeOptions sau CDP Page.setDownloadBehavior în Selenium 4.
  • 🪟 Dialoguri native: Declanșează scripturi AutoIt sau java.awt.Robot atunci când selectorul de fișiere al sistemului de operare blochează interacțiunea cu WebDriver.
  • 🤖 Asistență AI: Inteligența artificială generativă sugerează selectori, construiește fișiere de date de testare și validează automat integritatea fișierelor descărcate.
  • 🛡️ Verificare validare: Confirmați succesul încărcării prin mesaje de răspuns și verificați descărcările folosind compararea dimensiunii fișierului sau a sumei de control.

Cum să încărcați și să descărcați un fișier folosind Selenium

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

Încărcați fișierul în Selenium
Gestionați fereastra pop-up de încărcare a fișierelor Selenium Webdriver

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.

pachet proiect nou;
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.

Încărcați fișierul în Selenium

Rețineți următoarele două lucruri atunci când încărcați fișiere în WebDriver:

  1. 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.
  2. Când setați calea fișierului în dvs Java IDE, utilizați caracterul de escape adecvat pentru back-slash.

Încărcați fișierul în Selenium

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.

; upload.au3 – așteaptă dialogul Deschidere și introduce calea fișierului
WinWaitActive("Deschis")
Trimite(„C:\htmlnou.html”)
Trimite(„{ENTER}”)

De la Java, declanșează instrumentul auxiliar după clicul pe Răsfoire:

driver.findElement(By.id(„browseBtn”)).clic();
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.

Configurarea Wget

Pas 2) Deschideți Executare apăsând Windows tasta + „R”; tastați „cmd” și faceți clic pe OK.

Configurarea Wget

Tastați comanda „cd /” pentru a vă muta în directorul rădăcină.

Configurarea Wget

Pas 3) Tastați comanda pentru a verifica dacă configurația dată funcționează.

cmd /c C:\\Wget\\wget.exe -PC: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Configurarea Wget

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.

cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Configurarea Wget

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.

Folosind WebDriver și Wget

Pas 1) Importați pachetul „java.io.IOException” deoarece va trebui să prindem o IOException mai târziu în Pasul 4.

Folosind WebDriver și Wget

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

Folosind WebDriver și Wget

Pas 3) Configurați sintaxa pentru wget folosind următoarea comandă.

Folosind WebDriver și Wget

Pas 4) Inițiază procesul de descărcare apelând wget din codul nostru WebDriver.

Folosind WebDriver și Wget

Pentru a rezuma totul, codul dvs. WebDriver ar putea arăta ca cel prezentat mai jos.

pachet proiect nou;
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.

Folosind WebDriver și Wget

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

ChromeDriver șofer = nou ChromeDriver();
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.

Întrebări frecvente

Selenium apelează sendKeys() pe elementul cu calea absolută a fișierului. Browserul completează direct câmpul, deci nu se deschide niciun selector de fișiere al sistemului de operare și nu este necesar să faceți clic pe butonul Răsfoire.

Când pagina nu expune o intrare de fișier, utilizați AutoIt pe Windows sau clasa java.awt.Robot. Aceste instrumente tastează calea în caseta de dialog a sistemului de operare activ și apasă Enter după ce a fost făcut clic pe butonul Răsfoire.

Apelați executeCdpCommand(„Page.setDownloadBehavior”, params) cu behavior-ul setat la allow și downloadPath setat la folderul dvs. Selenium 4 redirecționează comanda către Chrome DevTools, iar solicitarea Salvare ca este omisă.

Da. Asistenții inteligenți artificiali citesc formularul de încărcare, sugerează selectori, generează fișiere de delimitare, cum ar fi exemple goale, supradimensionate sau cu extensii greșite și scriu blocul sendKeys(). Acest lucru scurtează timpul de configurare și descoperă cazuri limită pe care testerii umani le trec adesea cu vederea.

Instrumente AI sondați folderul țintă, comparați dimensiunea fișierului și suma de control cu ​​valorile așteptate și semnalați neconcordanțele. Modelele vizuale pot chiar deschide PDF-uri sau imagini și confirma că respectivul conținut se potrivește cu eticheta linkului, eliminând revizuirea manuală din rulările de regresie.

Wget ocolește complet browserul și salvează fișierul direct pe disc printr-un proces de linie de comandă. Este util pe sistemele vechi Selenium 2 sau 3 configurări în care preferințele de descărcare CDP și ChromeOptions nu sunt disponibile.

Rezumați această postare cu: