Een bestand uploaden en downloaden met behulp van Selenium Webstuurprogramma
Upload bestand in selenium
Het uploaden van bestanden in WebDriver gebeurt eenvoudigweg met behulp van de methode sendKeys() in het invoerveld voor bestandsselectie om het pad in te voeren naar het bestand dat moet worden geüpload.
In deze tutorial leren we hoe om te gaan met het uploaden en downloaden van bestanden.
Hoe u een bestand uploadt Selenium
Voor dit gedeelte zullen we gebruiken https://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.
Stel dat we het bestand “C:\newhtml.html” willen uploaden. Onze WebDriver-code zou eruit moeten zien zoals hieronder weergegeven.
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(); } }
Nadat u dit script hebt uitgevoerd, zou u het bestand met succes moeten kunnen uploaden en zou u een soortgelijk bericht moeten krijgen.
Houd rekening met de volgende twee dingen bij het uploaden van bestanden in WebDriver
- Het is niet nodig om het klikken op de knop "Bladeren" te simuleren. WebDriver voert automatisch het bestandspad in het tekstvak voor bestandsselectie van de element
- Bij het instellen van het bestandspad in uw Java IDE, gebruik het juiste escape-teken voor de back-slash.
Een bestand downloaden in Selenium Webstuurprogramma
WebDriver heeft geen mogelijkheid om toegang te krijgen tot de dialoogvensters Downloaden gepresenteerd door browsers 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 eenvoudig te gebruiken opdrachtregelprogramma dat wordt gebruikt om downloads te automatiseren. Kortom, we hebben toegang tot Wget 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".
Wget.exe downloaden 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” en klik op OK
Typ het commando “cd /” om naar de hoofdmap te gaan
Stap 3) Typ het commando om te controleren of de gegeven installatie werkt
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Er lijkt een probleem te zijn bij het schrijven naar de C-schijf.
Stap 4) U moet de wget-fouten op de opdrachtregel debuggen voordat u de code uitvoert met behulp van Selenium Webdriver. Deze fouten zullen blijven bestaan Eclipse en de foutmeldingen zullen niet zo informatief zijn. Het beste is om wget eerst te laten werken via de opdrachtregel. Als het op de opdrachtregel werkt, zal het zeker ook werken Eclipse.
In ons voorbeeld, zoals getoond in stap 3, is er een probleem met het schrijven naar de C-schijf. Laten we de downloadlocatie wijzigen in D-schijf en de resultaten controleren.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Messenger is succesvol gedownload.
Voordat u verder gaat, vergeet niet het gedownloade bestand te verwijderen
Gebruik WebDriver en Wget
In het volgende voorbeeld gebruiken we WebDriver en wget om een populaire chatsoftware genaamd Yahoo te downloaden Messenger. Onze basis-URL zal zijn https://demo.guru99.com/test/yahoo.html.
Stap 1) Importeer het pakket “java.io.IOException” omdat we later in stap 4 een IOException moeten opvangen.
Stap 2) Gebruik getAttribute() om de “href”-waarde van de downloadlink te verkrijgen en sla deze op 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 aan te roepen vanuit onze WebDriver-code.
Samenvattend kan uw WebDriver-code er uitzien zoals hieronder weergegeven.
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(); } }
Nadat u deze code hebt uitgevoerd, controleert u uw D-schijf en verifieert u dat Yahoo Messenger installatieprogramma is daar succesvol gedownload.
Samenvatting
- Het uploaden van bestanden in WebDriver gebeurt eenvoudigweg met behulp van de methode sendKeys() in het invoerveld voor bestandsselectie om het pad in te voeren naar het bestand dat moet worden geüpload.
- WebDriver kan het downloaden van bestanden niet zelfstandig automatiseren.
- De eenvoudigste manier om bestanden te downloaden met WebDriver is door Wget te gebruiken.