how upload file using selenium webdriver 3 methods
Erfahren Sie anhand von Codebeispielen verschiedene Methoden zum Behandeln des Hochladens von Dateien in Selen:
Das Hochladen von Dateien wird durchgeführt, wenn Dateien oder Dokumente auf einer bestimmten Website wie Formulare, Registrierungsseiten, Dokument-Uploader usw. hochgeladen werden müssen.
Das Hochladen eines Dateiprozesses umfasst das Durchsuchen einer Datei vom gewünschten Speicherort oder von Ihrem Computer und das Hochladen auf die Website.
=> Überprüfen Sie ALLE Selen-Tutorials hier
Was du lernen wirst:
Selen-Upload-Datei
Das Übergeben des Hochladens von Dateien in Selenium kann die menschliche Arbeit erleichtern und kann einfach mithilfe der sendKeys () Methode. Nach dem Hochladen einer Datei wird eine Meldung angezeigt, die bestätigt, ob die Datei erfolgreich hochgeladen wurde. Es gibt viele weitere solche Automatisierungsmethoden für das Hochladen von Dateien.
Zu den in diesem Lernprogramm behandelten Themen gehören das Hochladen von Dateien in HTML sowie Methoden zum Behandeln des Hochladens von Dateien in Selen (einschließlich Methoden wie: Verwenden von sendKeys, dann Verwenden von AutoIT und Robot-Klasse).
In diesem Tutorial wird auch die Implementierung von Code für das Hochladen von Dateien mit diesen Methoden in Selenium erläutert. Anschließend werden einige Beispiele aufgeführt, in denen das Hochladen von Dateien mithilfe von Selenium durchgeführt wird.
Datei-Upload in HTML
Die folgende Code-Implementierung erläutert den Vorgang des Hochladens von Dateien auf der HTML-Seite. Der HTML-Code zeigt, wie der Upload-Vorgang ausgeführt werden kann, indem Sie zuerst auf klicken Datei wählen Klicken Sie auf die Schaltfläche, um die hochzuladende Datei zu durchsuchen, und klicken Sie dann auf Datei hochladen Option, nach der wir sehen können, dass die Datei erfolgreich hochgeladen wurde.
Das obige Bild besteht aus der von HTML erstellten Seite und unten ist der HTML-Code für dieselbe. Lassen Sie uns einen kurzen Blick auf den HTML-Code werfen.
File Upload File Uploading (Upload the image file)
Select file to upload:
Also beim Hochladen der gewünschten Datei durch Klicken auf die Datei hochladen Mit dieser Option wird die folgende Seite (Bild) angezeigt (d. h. die hochgeladene Bilddatei wird angezeigt), die bestätigt, dass die zum Hochladen ausgewählte Datei erfolgreich hochgeladen wurde.
(Bild Quelle ))
Methoden zum Hochladen von Dateien in Selen
Lassen Sie uns einige Methoden zum Behandeln des Hochladens von Dateien und auch die Implementierung von Code für diese sehen.
Das Hochladen von Dateien in Selenium kann mit den folgenden Methoden erfolgen:
- Verwenden der sendKeys-Methode
- Verwenden des AutoIT-Tools
- Mit Hilfe von Robot Class
# 1) Verwenden der sendKeys-Methode
Die einfachste Methode zum Hochladen von Dateien in Selenium ist die sendKeys-Methode. Es ist eine integrierte Funktion zum Hochladen von Dateien in Selenium.
Die Syntax lautet wie folgt:
WebElement upload_file = driver.findElement(By.xpath('//input(@id='file_up')')); upload_file.sendKeys('C:/Users/Sonali/Desktop/upload.png');
Lassen Sie uns die Code-Implementierung für die obige Technik verstehen:
Zum Hochladen von Dateien mit dieser Methode müssen wir zuerst das Element oder die Schaltfläche zum Hochladen von Dateien überprüfen und dann mithilfe von sendKeys den Pfad durchsuchen, in dem die tatsächlich hochzuladende Datei gespeichert ist. Platzieren Sie den Pfad zusammen mit dem Dateinamen in sendKeys, sodass das Programm zum angegebenen Pfad navigiert, um die Datei abzurufen.
Klicken Sie anschließend auf die Schaltfläche Speichern oder Senden, um die Datei hochzuladen. Manchmal erhalten wir auch eine Nachricht, dass die Datei erfolgreich hochgeladen wurde.
Code-Implementierung mit der sendKeys-Methode:
wie man Binärdateien in Windows öffnet
package SeleniumPrograms; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class FileUpload { public static void main(String() args) throws IOException, InterruptedException { // TODO Auto-generated method stub WebDriver d = new FirefoxDriver(); d.manage().window().maximize(); //always write wait code after this d.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //for page load d.get('https://www.monsterindia.com/seeker/registration'); //Testing webpage d.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //for Implicit wait JavascriptExecutor js = (JavascriptExecutor)d; //Scrolling using JavascriptExecutor js.executeScript('window.scrollBy(0,380)');//Scroll Down to file upload button (+ve) Thread.sleep(3000); // FILE UPLOADING USING SENDKEYS .... WebElement browse = d.findElement(By.xpath('//input(@id='file-upload')')); //click on ‘Choose file’ to upload the desired file browse.sendKeys('C:\Users\Chait\Desktop\Files\Job Specification.txt'); //Uploading the file using sendKeys System.out.println('File is Uploaded Successfully'); } }
Zum Hochladen von Dateien mit der Option sendKeys müssen wir daher lediglich die integrierte sendKeys-Methode verwenden, um die erforderliche Datei erfolgreich hochzuladen.
Dies ist die Ausgabe des obigen Codes (z Monster.com ) wo wir eine Nachricht sehen können als: 'Datei erfolgreich hochgeladen' beim Hochladen der Datei in den Selenium-Webtreiber mit der sendKeys-Methode.
# 2) Verwenden von AutoIT
AutoIT ist eine Freeware und ein Open-Source-Automatisierungstool für das Windows-Betriebssystem. Es ist in einer BASIC-Skriptcomputersprache zur Automatisierung der Microsoft Windows-Benutzeroberfläche geschrieben. Es simuliert eine beliebige Kombination von Tastenanschlägen, Mausbewegungen und Manipulationen der Fenstersteuerung.
Schritte zum Herunterladen und Installieren des AutoIT-Tools:
- Öffnen Verknüpfung
- Gehen Sie zu AUTOIT -> DOWNLOADS. Laden Sie das neueste AutoIT herunter.
- Fahren Sie mit der Installation und Einrichtung von AutoIT fort (weiter -> zustimmen -> Auswahl von 32/64 Bit -> Auswahl des Speicherorts für die Installation der Datei -> Fertig stellen.
- Es gibt 2 Setup-Dateien: a) AutoIt Version 3 und B) SciTE auto 3.
- Öffnen Sie nach Abschluss der Installation den AutoIT-Editor.
- Gehen Sie zu dem Speicherort, an dem die Setup-Dateien gespeichert sind. Klicken Sie auf die Datei 'SciTE.exe'. Der AutoIT-Editor wird geöffnet. Bitte sehen Sie den folgenden Screenshot für den AutoIT-Editor.
AutoIT_Editor:
Lassen Sie uns jetzt kurz verstehen Verwendung dieses Tools:
- Öffnen Sie den AutoIT-Editor.
- Wir müssen einen einfachen Code in den AutoIT-Editor schreiben, der für den Datei-Upload-Vorgang erforderlich ist (der Name der hochzuladenden Datei wird im Code angegeben).
- Schließen Sie nun den Editor und klicken Sie mit der rechten Maustaste darauf. Die Option zum Kompilieren des Skripts wird angezeigt. Wählen Sie die Option Kompilierungsskript (x64) für 64-Bit-Computer und wählen Sie Kompilierungsskript (x86) für einen 32-Bit-Computer.
- Sobald der obige Schritt abgeschlossen ist, wird eine EXE-Datei erstellt, die in unserem Selenium-Eclipse-Code erwähnt wird. Nach der Kompilierung, wie im folgenden Bild zu sehen ‘Fileupload.exe’ Datei wird erstellt. Jetzt können wir diese Datei im Selenium-Webtreiberskript verwenden.
Gespeicherte_Dateien:
Das folgende Bild hilft uns zu verstehen, wie die hochzuladende Datei form.csv hochgeladen wird, indem das Selenium Eclipse-Skript ausgeführt wird, mit dem die Datei fileupload.exe ausgeführt wird.
>> Besuchen Sie diese Seite Weitere Informationen zu AutoIT.
Wir werden die Implementierung dieser Methode später in diesem Tutorial sehen.
Vorteile von AutoIT:
- AutoIT ist ein Open-Source-Tool, für das wir nicht bezahlen müssen.
- Kleine eigenständige ausführbare Dateien können mit AutoIT erstellt werden.
- Es unterstützt einfach aufzuzeichnende oder wiederzugebende Skripte.
- Wir können den Code einfach mit debuggen Konsolenschreibbefehl .
- Es hat die Möglichkeit, verschiedene GUIs zu erstellen und erkennt fast alle grundlegenden Windows-Steuerelemente.
- Es ist einfach und benutzerfreundlich.
Nachteile von AutoIT:
- Es funktioniert nur unter Windows
- Da grundlegende Codierungsprinzipien ein Muss sind, erweist es sich als großartiges Werkzeug für Profis, kann jedoch für Anfänger etwas kompliziert sein.
- AutoIT bietet bisher keine Java-Unterstützung.
- Die Benutzer müssen separate Bibliotheken importieren, während sie verschiedene vordefinierte Dienstprogrammfunktionen verwenden.
Wechseln wir nun mit AutoIT zum Implementierungscode von File Upload:
Hier sehen wir, wie wir das Hochladen von Dateien mit AutoIT in Selenium handhaben können. Betrachten wir dazu das Beispiel der OrangeHRM-Website.
Code-Implementierung für das Hochladen von Dateien in Selen mit AutoIT:
So öffnen Sie eine JNLP-Datei Windows 10
package SeleniumPrograms; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class FileUpload { public static void main(String() args) throws IOException, InterruptedException { // TODO Auto-generated method stub WebDriver d = new FirefoxDriver(); d.manage().window().maximize(); d.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); // for page load d.get(“https://opensource-demo.orangehrmlive.com/“); // Testing webpage d.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // for Implicit wait WebElement uname = d.findElement(By.id('txtUsername')); // Username.........ID uname.sendKeys('Admin'); WebElement pwd = d.findElement(By.name('txtPassword')); // Password.........NAME pwd.sendKeys('admin123'); WebElement loginb = d.findElement(By.xpath('//input(@id='btnLogin')')); loginb.click(); // Loginbutton......XPATH WebElement pim = d.findElement(By.id('menu_pim_viewPimModule')); pim.click(); // Admin tab-PIM WebElement config = d.findElement(By.id('menu_pim_Configuration')); config.click(); //Configuration tab WebElement data_imp = d.findElement(By.partialLinkText('Data ')); data_imp.click(); //Data Import tab.....PARTIALLINKT // UPLOADING FILE USING AutoIT.... WebElement browser = d.findElement(By.xpath('//input(@id='pimCsvImport_csvFile')')); //Browse button browser.click(); System.out.println(“1”); Runtime.getRuntime().exec('C:\Users\Chait\Desktop\autoit\fileupload.exe'); System.out.println('2'); Thread.sleep(3000); WebElement upload = d.findElement(By.id('btnSave')); //Upload button upload.click(); System.out.println('3'); System.out.println('File Uploaded Successfully'); // Confirmation message } }
Wie im obigen Code zu sehen ist, ist die folgende Zeile sehr wichtig, da sie die Verwendung von AutoIT zeigt:
Runtime.getRuntime (). Exec ('C: \ Benutzer \ Chait \ Desktop \ autoit \ fileupload.exe');
Hier,
- Laufzeit : Das Skript kann mit der Umgebung verbunden werden, in der das Skript ausgeführt wird.
- getRuntime(): Es wird verwendet, um die aktuelle Laufzeit abzurufen, die dem Prozess zugeordnet ist.
- exec (): Es führt das AutoIT-Skript aus (hier fileupload.exe).
Wenn das Programm diese Zeile ausführt, durchläuft es die Datei fileupload.exe, in der der AutoIT-Code wie folgt ausgeführt wird:
ControlFocus('File Upload','','Edit1') ControlSetText('File Upload','','Edit1','C:UsersChaitDesktopautoitdata_file.csv') ControlClick('File Upload','','Button1')
Hier,
- ControlFocus: Diese Methode setzt den Eingabefokus auf das Textfeld 'Dateiname'.
- ControlSetText: Diese Methode definiert den Pfad der Datei. Die Datei, die wir in das Textfeld 'Dateiname' hochladen, wird nachverfolgt.
- ControlClick: Mit dieser Methode klicken Sie im Datei-Uploader-Fenster auf die Schaltfläche 'Öffnen'.
Die Ausgabe für den obigen Code wird unten gezeigt:
(Bild Quelle ))
# 3) Mit Hilfe der Roboterklasse
Wie wir wissen, helfen Roboter bei der Verwaltung verschiedener Aktivitäten wie der Ausführung einiger Aufgaben, der Handhabung der Tastaturfunktionen, der Mausfunktionen und vielem mehr. Hier werden wir bestimmte Funktionen verstehen, die bei der Steuerung von Tastatur und Maus hilfreich sind, während eine Anwendung mit getestet wird Selen .
KeyEvents oder Methoden zur Implementierung der Roboterklasse
Bei der Implementierung der Robot-Klasse gibt es einige Methoden zur Ausführung von Testskripten.
Diese werden unten erwähnt:
- Tastendruck(): Diese Methode wird aufgerufen, wenn wir eine beliebige Taste drücken möchten.
-
- Beispiel: robot.keyPress (KeyEvent. UK_ENTER );
- KeyRelease (): Diese Methode wird verwendet, um die gedrückte Taste loszulassen.
- Beispiel: robot.keyRelease (KeyEvent. UK_ENTER );
- MouseMove (): Wird verwendet, wenn der Mauszeiger über die X- und Y-Koordinaten bewegt werden muss.
- Beispiel: robot.mouseMove ( Koordinaten.get.X () , Koordinaten.get.Y () );
- MousePress (): Diese Methode wird aufgerufen, wenn wir die linke Maustaste drücken möchten.
- Beispiel: robot.mousePress (InputEvent. BUTTON_MASK );
- MouseRelease (): Diese Methode wird verwendet, um die gedrückte Maustaste loszulassen.
- Beispiel: robot.mouseRelease (InputEvent. BUTTON_DOWN_MASK );
Vorteile der Roboterklasse
- Das Hochladen von Dateien mit der Roboterklasse ist einfach.
- Es übernimmt die Tastatur- und Mausfunktionen.
- Der Umgang mit Popups ist ebenfalls möglich.
Nachteile der Roboterklasse
- Tastatur- oder Mausereignisse funktionieren nur in der aktuellen Instanz des Fensters.
- Wenn während der Ausführung eines Roboterereignisses die Codeausführung in ein anderes Fenster verschoben wird, bleibt das Maus- oder Tastaturereignis weiterhin im vorherigen Fenster.
- Es ist nicht einfach, zwischen verschiedenen Fenstern zu wechseln.
Implementierung von Code für das Hochladen von Dateien mithilfe der Roboterklasse:
Dazu betrachten wir das Beispiel der Grammarly.com Webseite. Unten finden Sie den Implementierungscode für das Hochladen von Dateien in Selenium mithilfe der Robot-Klasse.
package SeleniumPrograms; import java.awt.AWTException; import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; import java.util.concurrent.TimeUnit; import java.awt.Robot; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import com.sun.glass.events.KeyEvent; public class FileUpload_Robo { public static void main(String() args) throws InterruptedException, AWTException { // TODO Auto-generated method stub WebDriver drv = new FirefoxDriver(); // starting Firefox browser drv.manage().window().maximize(); // maximizing window drv.manage().timeouts().pageLoadTimeout(10, TimeUnit. SECONDS);//for page load drv.get('https://www.grammarly.com/plagiarism-checker');//open testing website drv.manage().timeouts().implicitlyWait(10, TimeUnit. SECONDS);// for Implicit wait JavascriptExecutor js = (JavascriptExecutor)drv; // Scroll operation using Js Executor js.executeScript('window.scrollBy(0,200)'); // Scroll Down(+ve) upto browse option Thread.sleep(2000); // suspending execution for specified time period WebElement browse = drv.findElement(By.linkText('Upload a file')); // using linkText, to click on browse element browse.click(); // Click on browse option on the webpage Thread.sleep(2000); // suspending execution for specified time period // creating object of Robot class Robot rb = new Robot(); // copying File path to Clipboard StringSelection str = new StringSelection('C:\Users\Chait\Desktop\File upload.docx'); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(str, null); // press Contol+V for pasting rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); // release Contol+V for pasting rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyRelease(KeyEvent.VK_V); // for pressing and releasing Enter rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); } }
Die Ausgabe für den obigen Selencode ist unten gezeigt:
So können Dateien mithilfe einer Robot-Klasse hochgeladen werden, in der Eingabeereignisse wie Tastendruck und Tastenfreigabe zum Kopieren, Einfügen, Eingeben usw. verwendet werden.
Beispiele für das Hochladen von Dateien
Lassen Sie uns einige Beispiele für das Hochladen von Dateien sehen, die mit Hilfe von Selen durchgeführt werden:
# 1) Google Mail-Konto
Wenn Sie in einem Google Mail-Konto jemandem eine E-Mail senden, können Sie einen Anhang einfügen, d. H. Ein Dateidokument, das von einem beliebigen Typ sein kann: Dokument, Text, CSV, Bild, PDF usw. Hier wird das Hochladen von Dateien in den Kontext gestellt.
Weitere Details finden Sie unten im Screenshot des Datei-Uploads.
# 2) Dokument-Upload zur Überprüfung
Normalerweise müssen wir für Registrierungsseiten oder Formulare Dokumente zur Überprüfung hochladen.
Weitere Informationen finden Sie im folgenden Bild:
ID_Proof
Reg_form
So starten Sie ein Java-Projekt
Für verschiedene derartige Überprüfungen wie Beweisüberprüfung, Adressüberprüfung, Bildungsnachweis usw. müssen bestimmte Dokumente hochgeladen werden.
Fazit
Daher haben wir in diesem Tutorial gesehen, wie Dateien auf der HTML-Seite hochgeladen wurden. Wir haben auch verschiedene Methoden zum Behandeln des Hochladens von Dateien in Selen gesehen (einschließlich Methoden wie die Verwendung von sendKeys, die Verwendung von AutoIT und die Verwendung der Robot-Klasse). Wir haben auch die Implementierung von Code für das Hochladen von Dateien in Selen für jede dieser Methoden verstanden und uns schließlich einige Beispiele angesehen.
Autor Bio - Dieser Artikel wurde von Sonali Satpute verfasst, einem qualifizierten B.E. (Computer) von MITCOE, Pune, Professional Software Tester und Content Writer.
=> Lesen Sie den vollständigen Selen-Leitfaden durch
Literatur-Empfehlungen
- Umgang mit Windows Popup in Selen mit AutoIT
- Wie wähle ich Optionsfelder in Selenium WebDriver aus?
- So aktivieren Sie das Kontrollkästchen in Selen mit Beispielen
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- Einführung in Selenium WebDriver - Selenium Tutorial # 8
- ChromeDriver Selenium Tutorial: Selenium Webdriver-Tests auf Chrome
- Roboterklasse in Selenium WebDriver Mit Java
- AutoIt-Tutorial - AutoIt-Download, Installation und grundlegendes AutoIt-Skript