Quelqu'un peut-il me dire comment télécharger un fichier à l'aide de Selenium avec Java?
Lorsque je clique sur le bouton dans l'application, il s'ouvre dans la nouvelle fenêtre, ce que je peux utiliser pour sélectionner le fichier de téléchargement. Le bouton parcourir développé par Silverlight (C #).
Assurez-vous d'abord que l'élément d'entrée est visible
Comme l'a déclaré Mark Collin dans la discussion ici :
Ne cliquez pas sur le bouton Parcourir, cela déclenchera une boîte de dialogue au niveau du système d'exploitation et arrêtera votre test mort.
Au lieu de cela, vous pouvez utiliser:
driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");
myUploadElement est l'identifiant de cet élément (bouton dans ce cas) et dans sendKeys vous devez spécifier le chemin absolu du contenu que vous souhaitez télécharger (Image, vidéo, etc.). Le sélénium fera le reste pour vous.
N'oubliez pas que le téléchargement ne fonctionnera que Si l'élément que vous envoyez un fichier doit être de la forme <input type="file">
driver.findElement(By.id("urid")).sendKeys("drive:\\path\\filename.extension");
C'est ce que j'utilise pour télécharger l'image via la fenêtre de téléchargement:
//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);
terminé
Si vous avez une zone de texte pour taper le chemin du fichier, utilisez simplement sendkeys pour saisir le chemin du fichier et cliquez sur le bouton d'envoi. S'il n'y a pas de zone de texte pour taper le chemin du fichier et que vous ne pouvez cliquer que sur le bouton Parcourir et sélectionner le fichier dans une fenêtre contextuelle, vous pouvez utiliser l'outil AutoIt, voir l'étape ci-dessous pour utiliser AutoIt à l'identique,
Téléchargez et installez l'outil Autoit à partir de http://www.autoitscript.com/site/autoit/
Ouvrez Programmes -> outil Autoit -> SciTE Script Editor.
Collez le code suivant dans l’éditeur Autoit et enregistrez-le sous le nom "filename.exe" (par exemple: new.exe).
Ensuite, compilez et construisez le fichier pour le rendre exe. (Outils → Compiler)
Code d'auto:
WinWaitActive("File Upload"); Name of the file upload window (Windows Popup Name: File Upload)
Send("logo.jpg"); File name
Send("{ENTER}")
Ensuite, compilez et construisez à partir du menu Outils de l'outil Autoit -> SciTE Script Editor.
Collez le code ci-dessous Java dans l’éditeur Eclipse et sauvegardez-le).
Code 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.
J'ai essayé d'utiliser le robot ci-dessus il y a un besoin d'ajouter un délai :( aussi vous ne pouvez pas déboguer ou faire autre chose parce que vous perdez le focus :(
// ouvre la fenêtre de téléchargement 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);