Kako prenijeti i preuzeti datoteku pomoću Selenium Webdriver
Prenesi datoteku u selenium
Prijenos datoteka u WebDriver obavlja se jednostavnom upotrebom metode sendKeys() u polju za unos datoteke za odabir datoteke za unos putanje do datoteke koju želite prenijeti.
U ovom vodiču naučit ćemo kako se nositi s učitavanjem i preuzimanjem datoteka.
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.
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(); } }
Nakon pokretanja ove skripte, trebali biste moći uspješno učitati datoteku i trebali biste dobiti poruku sličnu ovoj.
Imajte na umu dvije stvari kada učitavate datoteke u WebDriver
- Nema potrebe za simuliranjem klika na gumb "Pregledaj". WebDriver automatski unosi put datoteke u tekstni okvir za odabir datoteke element
- Prilikom postavljanja putanje datoteke u vašem Java IDE, koristite ispravan izlazni znak za kosu crtu unatrag.
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 smjestite ga u mapu Wget koju ste stvorili u gornjem koraku.
Korak 2) Otvorite Run pritiskom na Windows tipku + “R” ; upišite "cmd" i kliknite OK
Upišite naredbu “cd /” za prelazak u korijenski direktorij
Korak 3) Upišite naredbu kako biste provjerili radi li zadana postavka
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Čini se da postoji problem s pisanjem na C pogon.
Korak 4) Morate otkloniti pogreške wget-a u naredbenom retku prije nego što izvršite kod pomoću Selenium Webdriver. Te će se pogreške zadržati Eclipse a poruke o pogreškama neće biti toliko informativne. Najbolje je najprije natjerati wget da radi pomoću naredbenog retka. Ako radi u naredbenom retku, sigurno će raditi Eclipse.
U našem primjeru, kao što je prikazano u koraku 3, postoji problem pri pisanju u pogon C. Promijenimo mjesto preuzimanja na D disk i provjerimo rezultate.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
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 Messenger. Naš osnovni URL bit će 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() da dobijete vrijednost "href" veze za preuzimanje i spremite je kao varijablu String. U ovom smo slučaju varijablu 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.
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(); } }
Nakon izvršavanja ovog koda, provjerite svoj D pogon i provjerite je li Yahoo Messenger instalacijski program je tamo uspješno preuzet.
rezime
- Prijenos datoteka u WebDriver obavlja se jednostavnom upotrebom metode sendKeys() u polju za unos datoteke za odabir datoteke za unos putanje do datoteke koju želite prenijeti.
- WebDriver ne može sam automatizirati preuzimanje datoteka.
- Najlakši način preuzimanja datoteka pomoću WebDrivera je korištenje Wgeta.