Cum să încărcați și să descărcați un fișier folosind Selenium
Încărcați fișierul în selenium
Încărcarea fișierelor în WebDriver se face prin simpla utilizare a metodei sendKeys() în câmpul de introducere de selectare a fișierului pentru a introduce calea către fișierul care urmează să fie încărcat.
În acest tutorial, vom învăța Cum să gestionăm încărcările și descărcările de fișiere.
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.
package newproject; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class PG9 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); String baseUrl = "https://demo.guru99.com/test/upload/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement uploadElement = driver.findElement(By.id("uploadfile_0")); // enter the file path onto the file-selection input field uploadElement.sendKeys("C:\\newhtml.html"); // check the "I accept the terms of service" check box driver.findElement(By.id("terms")).click(); // click the "UploadFile" button driver.findElement(By.name("send")).click(); } }
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.
Nu uitați să urmați două lucruri atunci când încărcați fișiere în WebDriver
- Nu este nevoie să simulați clicul pe butonul „Răsfoiți”. WebDriver introduce automat calea fișierului în caseta de text de selecție a fișierului element
- Când setați calea fișierului în dvs Java IDE, utilizați caracterul de escape adecvat pentru back-slash.
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 de la pasul de mai sus.
Pas 2) Deschideți Run apăsând tasta Windows + „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ă
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Se pare că există o problemă la scrierea pe unitatea C.
Pas 4) Trebuie să depanați erorile wget din linia de comandă înainte de a executa codul folosind Selenium Webdriver. Aceste erori vor persista în Eclipse iar mesajele de eroare nu vor fi la fel de informative. Cel mai bine este să puneți mai întâi wget să lucreze folosind linia de comandă. Dacă funcționează în linia de comandă, va funcționa cu siguranță în Eclipse.
În exemplul nostru, așa cum se arată în pasul 3, există o problemă la scrierea în unitatea C. Să schimbăm locația de descărcare la unitatea D și să verificăm rezultatele.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
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 Messenger. URL-ul nostru de bază va fi 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) Utilizați getAttribute() pentru a obține valoarea „href” a link-ului de descărcare și salvați-o ca variabilă 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.
package newproject; import java.io.IOException; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class PG8 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); String baseUrl = "https://demo.guru99.com/test/yahoo.html"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement downloadButton = driver.findElement(By .id("messenger-download")); String sourceLocation = downloadButton.getAttribute("href"); String wget_command = "cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate " + sourceLocation; try { Process exec = Runtime.getRuntime().exec(wget_command); int exitVal = exec.waitFor(); System.out.println("Exit value: " + exitVal); } catch (InterruptedException | 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.
Rezumat
- Încărcarea fișierelor în WebDriver se face prin simpla utilizare a metodei sendKeys() în câmpul de introducere de selectare a fișierului pentru a introduce calea către fișierul care urmează să fie încărcat.
- WebDriver nu poate automatiza descărcarea fișierelor pe cont propriu.
- Cel mai simplu mod de a descărca fișiere folosind WebDriver este să utilizați Wget.