In deze tutorial leren we hoe we omgaan met het uploaden en downloaden van bestanden.
Bestanden uploaden
Voor deze sectie gebruiken we http://demo.guru99.com/test/upload/ als onze testapplicatie. Op deze site kan elke bezoeker gemakkelijk bestanden uploaden zonder dat hij zich hoeft aan te melden.
Het uploaden van bestanden in WebDriver wordt gedaan door simpelweg de methode sendKeys () te gebruiken in het invoerveld voor bestandsselectie om het pad naar het te uploaden bestand in te voeren.
omgaan met de pop-up voor het uploaden van bestanden in selenium webdriverStel dat we het bestand "C: \ newhtml.html" willen uploaden. Onze WebDriver-code moet er als volgt uitzien.
pakket nieuwproject;importeer org.openqa.selenium. *;importeer org.openqa.selenium.firefox.FirefoxDriver;openbare klasse PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/upload/";WebDriver-stuurprogramma = nieuwe FirefoxDriver ();driver.get (baseUrl);WebElement uploadElement = driver.findElement (By.id ("uploadfile_0"));// voer het bestandspad in het invoerveld voor bestandsselectie inuploadElement.sendKeys ("C: \\ newhtml.html");// schakel het selectievakje "Ik ga akkoord met de servicevoorwaarden" indriver.findElement (By.id ("terms")). click ();// klik op de "UploadFile" knopdriver.findElement (By.name ("send")). click ();
Nadat u dit script heeft uitgevoerd, zou u het bestand met succes moeten kunnen uploaden en zou u een vergelijkbaar bericht moeten krijgen.
Onthoud de volgende twee dingen bij het uploaden van bestanden in WebDriver
- Het klikken op de knop "Bladeren" hoeft niet te worden gesimuleerd. WebDriver voert automatisch het bestandspad in het bestandsselectietekstvak van het - element in
- Gebruik bij het instellen van het bestandspad in uw Java IDE het juiste escape-teken voor de back-slash.
Bestanden downloaden
WebDriver heeft geen mogelijkheid om toegang te krijgen tot de downloaddialoogvensters die door browsers worden gepresenteerd wanneer u op een downloadlink of -knop klikt. We kunnen deze dialoogvensters echter omzeilen met een apart programma genaamd "wget".
Wat is Wget?
Wget is een klein en gebruiksvriendelijk opdrachtregelprogramma dat wordt gebruikt om downloads te automatiseren . In principe zullen we Wget openen vanuit ons WebDriver-script om het downloadproces uit te voeren.
Wget instellen
Stap 1: Maak in uw C-schijf een nieuwe map en noem deze "Wget".
Download wget.exe vanaf hier en plaats het in de Wget-map die u in de bovenstaande stap hebt gemaakt.
Stap 2: Open Uitvoeren door op de Windows-toets + "R" te drukken; typ "cmd in en klik op ok
Typ het commando "cd /" om naar de hoofdmap te gaan
Stap 3: Typ de opdracht om te controleren of de gegeven setup werkt
cmd / c C: \\ Wget \\ wget.exe -PC: --no-check-certificaat http://demo.guru99.com/selenium/msgr11us.exe
Er lijkt een probleem te zijn met het schrijven naar de C-schijf.
Stap 4: U moet de wget-fouten in de opdrachtregel debuggen voordat u de code uitvoert met Selenium Webdriver. Deze fouten blijven bestaan in Eclipse en de foutmeldingen zijn niet zo informatief. Het is het beste om wget eerst te laten werken via de opdrachtregel. Als het in de opdrachtregel werkt, zal het zeker werken in Eclipse.
In ons voorbeeld, zoals getoond in stap 3, is er een probleem bij het schrijven naar de C-schijf. Laten we de downloadlocatie wijzigen in D-schijf en de resultaten controleren.
cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificaat http://demo.guru99.com/selenium/msgr11us.exe
Messenger is succesvol gedownload.
Vergeet niet het gedownloade bestand te verwijderen voordat u verder gaat
Met behulp van WebDriver en Wget
In het volgende voorbeeld zullen we WebDriver en wget gebruiken om een populaire chatsoftware genaamd Yahoo Messenger te downloaden. Onze basis-URL is http://demo.guru99.com/test/yahoo.html.
Stap 1
Importeer het "java.io.IOException" -pakket omdat we later in stap 4 een IOException moeten afvangen.
Stap 2
Gebruik getAttribute () om de "href" -waarde van de downloadlink te verkrijgen en deze op te slaan als een String-variabele. In dit geval hebben we de variabele de naam "sourceLocation" gegeven.
Stap 3
Stel de syntaxis voor wget in met de volgende opdracht.
Stap 4
Start het downloadproces door wget te bellen vanuit onze WebDriver-code.
Om het allemaal samen te vatten, zou uw WebDriver-code eruit kunnen zien zoals hieronder wordt weergegeven.
pakket nieuwproject;importeer java.io.IOException;importeer org.openqa.selenium. *;importeer org.openqa.selenium.firefox.FirefoxDriver;openbare klasse PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/yahoo.html";WebDriver-stuurprogramma = nieuwe 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 -PD: --no-check-certificate" + sourceLocation;proberen {Proces exec = Runtime.getRuntime (). Exec (wget_command);int exitVal = exec.waitFor ();System.out.println ("Exit waarde: + exitVal);} catch (InterruptedException | IOException ex) {System.out.println (ex.toString ());driver.close ();
Controleer na het uitvoeren van deze code uw D-schijf en verifieer dat het Yahoo Messenger-installatieprogramma daar met succes is gedownload.
Overzicht
- Het uploaden van bestanden in WebDriver wordt gedaan door simpelweg de methode sendKeys () te gebruiken in het invoerveld voor bestandsselectie om het pad naar het te uploaden bestand in te voeren.
- WebDriver kan het downloaden van bestanden niet zelf automatiseren.
- De eenvoudigste manier om bestanden te downloaden met WebDriver, is door Wget te gebruiken.