Come caricare file usando Selenium WebDriver in Java

Qualcuno può farmi sapere come caricare un file utilizzando il codice Selenium per Java?

Quando faccio clic sul pulsante dell’applicazione, nella nuova finestra si apre ciò che posso usare per selezionare il file di caricamento. Il pulsante Sfoglia sviluppato da Silverlight (C #).

Innanzitutto assicurati che l’elemento di input sia visibile

Come affermato da Mark Collin nella discussione qui :

Non fare clic sul pulsante Sfoglia, attiverà una finestra di dialogo a livello di sistema operativo e fermerà definitivamente il test.

Invece puoi usare:

driver.findElement(By.id("myUploadElement")).sendKeys("");

myUploadElement è l’id di quell’elemento (pulsante in questo caso) e in sendKeys devi specificare il percorso assoluto del contenuto che vuoi caricare (immagine, video ecc.). Il selenium farà il resto per te.

Tieni presente che il caricamento funzionerà solo se l’elemento che invii un file deve essere nel formato

 driver.findElement(By.id("urid")).sendKeys("drive:\\path\\filename.extension"); 

Questo è quello che uso per caricare l’immagine attraverso la finestra di caricamento:

  //open upload window upload.click(); //put path to your image in a clipboard StringSelection ss = new StringSelection("C:\\IMG_3827.JPG"); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); //imitate mouse events like ENTER, CTRL+C, CTRL+V Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_ENTER); robot.keyRelease(KeyEvent.VK_ENTER); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_ENTER); robot.keyRelease(KeyEvent.VK_ENTER); 

fatto

Se hai una casella di testo per digitare il percorso del file, basta usare sendkeys per inserire il percorso del file e fare clic sul pulsante di invio. Se non c’è una casella di testo per digitare il percorso del file e solo in grado di fare clic sul pulsante Sfoglia e per selezionare il file dal popup di Windows, è ansible utilizzare lo strumento AutoIt, vedere il passaggio seguente per utilizzare AutoIt per lo stesso,

  1. Scarica e installa lo strumento Autoit da http://www.autoitscript.com/site/autoit/

  2. Apri Programmi -> Strumento Autoit -> Editor Script SciTE.

  3. Incolla il seguente codice nell’editor Autoit e salvalo come “nomefile.exe” (es .: new.exe)

    Quindi compila e crea il file per renderlo exe. (Strumenti → Compila)

Codice Autoit:

 WinWaitActive("File Upload"); Name of the file upload window (Windows Popup Name: File Upload) Send("logo.jpg"); File name Send("{ENTER}") 

Quindi compila e costruisci dal menu Strumenti dello strumento Autoit -> Scite Script Editor.

Incolla il seguente codice Java nell’editor di Eclipse e salva

Codice Java:

 driver.findElement(By.id("uploadbutton")).click; // open the Upload window using selenium Thread.sleep("20000"); // wait for page load Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "C:\\Documents and Settings\\new.exe"); // Give path where the exe is saved. 

Ho provato ad usare il robot di cui sopra c’è bisogno di aggiungere un ritardo 🙁 anche tu non puoi eseguire il debug o fare qualcos’altro perché hai perso il focus 🙁

// apri la finestra di caricamento upload.click ();

 //put path to your image in a clipboard StringSelection ss = new StringSelection(file.getAbsoluteFile()); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); //imitate mouse events like ENTER, CTRL+C, CTRL+V Robot robot = new Robot(); robot.delay(250); robot.keyPress(KeyEvent.VK_ENTER); robot.keyRelease(KeyEvent.VK_ENTER); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_ENTER); robot.delay(50); robot.keyRelease(KeyEvent.VK_ENTER); 

Trova il tag come type="file" . questo è il tag principale che è supportato dal selenium. Se sei in grado di build il tuo XPath con lo stesso quando è raccomandato.

  • usa sendkeys per il pulsante con l’opzione di navigazione (il pulsante che aprirà la finestra per selezionare i file)
  • Ora fai clic sul pulsante che sta per caricare il tuo file

Come sotto :-

 driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"Lighthouse.jpg""); Thread.sleep(5000); driver.findElement(By.xpath("//button[@id='Upload']")).click(); 

Per il caricamento di più file, metti tutti i file uno a uno con i sendkeys e poi fai clic su upload

 driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"Lighthouse.jpg""); driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"home.jpg"); driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"tsquare.jpg"); Thread.sleep(5000); driver.findElement(By.xpath("//button[@id='Upload']")).click(); // Upload button