how upload file using selenium webdriver 3 methods
Lär dig olika metoder för att hantera filöverföring i Selenium med kodexempel:
Filöverföring utförs när det finns ett behov av att ladda upp någon fil eller ett dokument på en specifik webbplats, såsom formulär, registreringssidor, dokumentuppladdare etc.
Att ladda upp en filprocess inkluderar att bläddra i en fil från önskad plats eller från din dator och ladda upp den till webbplatsen.
=> Kontrollera ALLA Selen-handledning här
Vad du kommer att lära dig:
Selenium-uppladdningsfil
Att överföra filöverföring i Selenium kan underlätta mänskligt arbete och kan göras helt enkelt med sendKeys () metod. Ett meddelande visas efter uppladdning av en fil som bekräftar om filen laddas upp. Det finns många fler sådana automatiseringsmetoder för filöverföring.
Ämnen som behandlas i denna handledning inkluderar filöverföring i HTML, metoder för att hantera filöverföring i Selenium (som skulle inkludera metoder, nämligen: använda sendKeys, sedan använda AutoIT och Robot-klassen).
Denna handledning förklarar också implementeringen av kod för hantering av filuppladdning med hjälp av dessa metoder i Selenium, varefter vi kommer att se några exempel där filuppladdning utförs med hjälp av Selenium.
Filöverföring i HTML
Nedanstående kodimplementering förklarar filöverföring på HTML-sida. HTML-koden visar hur uppladdningen kan utföras genom att först klicka på Välj FIL för att bläddra i filen som ska laddas upp och klicka sedan på Ladda upp fil alternativ, varefter vi kan se filen laddas upp framgångsrikt.
Ovanstående bild består av den HTML-skapade sidan och nedan är HTML-koden för samma. Låt oss ta en snabb titt på HTML-koden.
File Upload File Uploading (Upload the image file)
Select file to upload:
Således vid uppladdning av önskad fil genom att klicka på Ladda upp fil alternativet visas nedanstående sida (bild) (dvs. den uppladdade bildfilen visas) som bekräftar att den fil som valts att ladda upp har laddats upp.
[bild källa ]
Metoder för att ladda upp filer i selen
Låt oss se några metoder för hantering av filöverföring och även implementering av kod för detsamma.
Filer som laddas upp i Selen kan göras med följande metoder:
- Med hjälp av sendKeys-metoden
- Använda AutoIT-verktyget
- Med hjälp av Robot Class
# 1) Med hjälp av sendKeys-metoden
Det mest grundläggande sättet att ladda upp filer i Selen är att använda sendKeys-metoden. Det är en inbyggd funktion för filöverföring i Selen.
Syntaksen är som nedan:
WebElement upload_file = driver.findElement(By.xpath('//input[@id='file_up']')); upload_file.sendKeys('C:/Users/Sonali/Desktop/upload.png');
Låt oss förstå kodimplementeringen för ovanstående teknik:
För att ladda upp filer med den här metoden måste vi först inspektera elementet eller knappen som tillhandahålls för filöverföring, sedan genom att använda sendKeys, bläddra i sökvägen där den faktiska filen som ska laddas upp bevaras. Placera sökvägen tillsammans med filnamnet i sendKeys så att programmet navigeras till den nämnda sökvägen för att hämta filen.
Efter detta klickar du på knappen Spara eller Skicka och filen visas uppladdad. Ibland får vi också ett meddelande om att filen laddas upp.
Kodimplementering med sendKeys-metoden:
teknisk support analytiker intervju frågor och svar
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'); } }
Således, för att ladda upp filer med alternativet sendKeys, måste vi helt enkelt använda den inbyggda sendKeys-metoden för att ladda upp den önskade filen framgångsrikt.
hur man hittar nätverksnyckel på routern
Detta är utdata från ovanstående kod (för Monster.com ) där vi kan se ett meddelande som: ”Filen laddades upp framgångsrikt” om att ladda upp filen i selen web-drivrutin med sendKeys-metoden.
# 2) Använda AutoIT
AutoIT är ett freeware och ett open source-automatiseringsverktyg för Windows-operativsystemet. Det är skrivet på ett BASIC-skriptsdatorspråk för automatisering av Microsoft Windows användargränssnitt. Det simulerar alla kombinationer av tangenttryckningar, musrörelser och manipulation av Windows-kontroller.
Steg för att ladda ner och installera AutoIT-verktyget:
- Öppen länk
- Gå till AUTOIT -> DOWNLOADS. Ladda ner den senaste AutoIT.
- Fortsätt med AutoIT installation och installation (nästa -> godkänn -> 32/64 bit val -> filinstallationsplatsval -> Slutför.
- Det finns två installationsfiler: a) AutoIt version 3 och b) SciTE auto 3.
- När installationen är klar öppnar du AutoIT-redigeraren.
- Gå till platsen där installationsfiler sparas, klicka på filen 'SciTE.exe' och AutoIT-redigeraren öppnas. Se skärmdumpen nedan för AutoIT-redigeraren.
AutoIT_Editor:
Låt oss nu förstå det kort hur man använder detta verktyg:
- Öppna AutoIT-redigeraren.
- Vi måste skriva en enkel kod i AutoIT-redigeraren, som krävs för filöverföring (namnet på filen som ska laddas upp kommer att nämnas i koden).
- Stäng nu redigeraren och högerklicka på den, du kommer att se kompilera skriptalternativ. Välj kompileringsskript (x64) för 64-bitarsmaskin och gå med kompileringsskript (x86) för en 32-bitarsmaskin.
- Så snart ovanstående steg är slutfört skapas en .exe-fil och den här filen kommer att nämnas i vår selenförmörkelsekod. Efter sammanställning, se bilden nedan 'Fileupload.exe' filen skapas. Nu kan vi använda den här filen i Selenium-drivrutinsskriptet.
Saved_files:
Bilden nedan hjälper oss att förstå hur filen som ska laddas upp som är form.csv laddas upp genom att köra selen-eclipse-skriptet som kör filen fileupload.exe.
>> Besök detta sida för mer information om AutoIT.
Vi kommer att se implementeringen av denna metod senare i denna handledning.
Fördelar med AutoIT:
- AutoIT är ett verktyg för öppen källkod som vi inte behöver betala för.
- Små fristående körbara filer kan skapas med AutoIT.
- Den stöder lätt att spela in eller spela upp skript.
- Vi kan enkelt felsöka koden med konsol skrivkommando .
- Det har möjlighet att skapa olika GUI och känner igen nästan alla grundläggande Windows-kontroller.
- Det är enkelt och användarvänligt.
Nackdelar med AutoIT:
- Det fungerar bara i Windows-operativsystem
- Eftersom kunskap om grundläggande kodningsprinciper är ett måste, visar det sig vara ett bra verktyg för proffs men kan vara lite komplicerat för nybörjare.
- AutoIT har hittills inte Java-stöd tillgängligt.
- Användarna måste importera separata bibliotek medan de använder olika fördefinierade verktygsfunktioner.
Låt oss nu gå till implementeringskoden för filöverföring med AutoIT:
Här kommer vi att se hur vi kan hantera filöverföring med AutoIT i Selenium. Låt oss överväga exemplet på OrangeHRM-webbplatsen.
Kodimplementering för hantering av filöverföring i Selen med AutoIT:
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 } }
Som framgår av ovanstående kod är följande rad mycket viktig eftersom den visar användningen av AutoIT:
Runtime.getRuntime (). Exec (“C: \ Användare \ Chait \ Desktop \ autoit \ fileupload.exe”);
Här,
- Körning : Det gör att manuset kan ansluta till den miljö där manuset körs.
- getRuntime (): Den används för att få den aktuella körtiden som är associerad med processen.
- exec (): Det kör AutoIT-skriptet (här, vilket är fileupload.exe).
När programmet kör den här raden går den genom filenupload.exe-filen där AutoIT-koden körs enligt nedan:
ControlFocus('File Upload','','Edit1') ControlSetText('File Upload','','Edit1','C:UsersChaitDesktopautoitdata_file.csv') ControlClick('File Upload','','Button1')
Här,
- ControlFocus: Denna metod ställer in inmatningsfokus till ”filnamn” textruta.
- ControlSetText: Den här metoden definierar filens sökväg. Filen som vi kommer att ladda upp i textrutan ”filnamn” - dess sökväg spåras.
- ControlClick: Denna metod används för att klicka på knappen 'Öppna' i filöverföringsfönstret.
Utgången för ovanstående kod visas nedan:
[bild källa ]
# 3) Med hjälp av robotklass
Robotar som vi vet hjälper till att hantera olika aktiviteter som att utföra vissa uppgifter, hantera tangentbordets funktioner, musfunktionerna och många fler. Här kommer vi att förstå vissa funktioner som är användbara för att styra tangentbordet och musen medan ett program testas med hjälp av Selen .
Viktiga händelser eller metoder för implementering av robotklassen
Vid implementeringen av Robot-klassen finns det några metoder för körning av testskript.
Dessa nämns nedan:
Java-programmeringsfrågor och svar för skriftligt test
- Knapptryckning(): Denna metod kallas när vi vill trycka på valfri knapp.
-
- Exempel: robot.keyPress (KeyEvent. UK_ENTER );
- KeyRelease (): Denna metod används för att släppa den tryckta knappen.
- Exempel: robot.keyRelease (KeyEvent. UK_ENTER );
- MouseMove (): Används när det finns ett behov av att flytta muspekaren över 'X' och 'Y' koordinater.
- Exempel: robot.mouseMove ( coordinates.get.X () , coordinates.get.Y () );
- MousePress (): Denna metod kallas när vi vill trycka på vänster musknapp.
- Exempel: robot.mousePress (InputEvent. BUTTON_MASK );
- MouseRelease (): Denna metod används för att släppa den nedtryckta musknappen.
- Exempel: robot.mouseRelease (InputEvent. BUTTON_DOWN_MASK );
Fördelar med robotklass
- Filöverföring med robotklassen är enkelt.
- Den hanterar tangentbordets och musfunktionerna.
- Hantering av popup-fönster är också möjligt.
Nackdelar med robotklass
- Tangentbord eller mushändelse fungerar bara i den aktuella instansen av fönstret.
- Om du utför en robothändelse, om kodkörningen flyttas till ett annat fönster, är mus- eller tangentbordshändelsen fortfarande kvar i föregående fönster.
- Det är inte lätt att växla mellan olika fönster.
Implementering av kod för filöverföring med robotklass:
För detta kommer vi att överväga exemplet med Grammarly.com hemsida. Nedan följer implementeringskoden för hantering av filöverföring i Selenium med Robot-klass.
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); } }
Utdata för ovanstående selenkod visas nedan:
Således kan filer laddas upp med hjälp av en robotklass, där vi kan se användningen av inmatningshändelser som tangenttryckning och tangentfrigöring för kopiering, klistra in, skriva in osv.
Exempel på filöverföring
Låt oss se några exempel på filöverföring som utförs med hjälp av Selenium:
# 1) Gmail-konto
I ett Gmail-konto, medan du skickar e-post till någon, kan du inkludera en bilaga, dvs ett fildokument som kan vara av vilken typ som helst: doc, text, csv, image, pdf, etc. Här laddas filöverföringen samman.
För mer information se nedan skärmdump av filöverföringen.
# 2) Dokumentöverföring för verifiering
För registreringssidor eller formulär behöver vi vanligtvis ladda upp dokument för verifiering.
Se bilden nedan för mer förtydligande:
ID_Proof
Reg_form
För olika sådana verifieringar som bevisverifiering, adressverifiering, utbildningsbevis etc. måste specifika dokument laddas upp.
Slutsats
Således har vi i denna handledning sett filuppladdning på HTML-sidan. Vi har också sett olika metoder för att hantera filöverföring i Selenium (som inkluderar metoder som att använda sendKeys, använda AutoIT och använda Robot-klass). Vi förstod också implementeringen av kod för hantering av filöverföring i Selen för var och en av dessa metoder och såg slutligen några exempel.
Författare Bio - Den här artikeln skrevs av Sonali Satpute, en kvalificerad B.E. (dator) från MITCOE, Pune, Professional Software Tester och Content Writer.
=> Läs igenom hela Selen-guiden
Rekommenderad läsning
- Hur man hanterar Windows Pop Up i Selen med AutoIT
- Hur man väljer radioknappar i Selen WebDriver?
- Hur man markerar kryssrutan i selen med exempel
- Gurka Selen Tutorial: Gurka Java Selen WebDriver Integration
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- ChromeDriver Selen Tutorial: Selen Webdriver Tests på Chrome
- Robotklass i Selen WebDriver med Java
- AutoIt-handledning - AutoIt-nedladdning, installation och grundläggande AutoIt-skript