73 votes

Comment télécharger un fichier (image) avec du sélénium, du python

Comment télécharger une image sur une application web avec l'outil de test de sélénium ? J'utilise python.

J'ai essayé beaucoup de choses, mais rien n'a fonctionné.

181voto

karloskar Points 1551

Ce que je fais est ceci (assurez-vous que drv est une instance de webdriver):

 drv.find_element_by_id("IdOfInputTypeFile").send_keys(os.getcwd()+"/image.png")

puis trouvez votre bouton d'envoi et cliquez dessus.

20voto

Xraycat922 Points 161

Un moyen très simple de contrôler des composants tels que le sélecteur de fichiers Windows (ou simplement votre système d'exploitation en général) consiste à utiliser pyautogui. Vous pouvez installer pyautogui via pip

 import pyautogui
... # set the webdriver etc.
...
...
element_present = EC.presence_of_element_located((By.XPATH, "//button[@title='Open file selector']"))  # Example xpath

WebDriverWait(self.driver, 10).until(element_present).click() # This opens the windows file selector

pyautogui.write('C:/path_to_file') 
pyautogui.press('enter')

7voto

saravanan Points 51

Toutes ces approches ne fonctionneront pas avec les téléchargeurs d'images modernes dans olx !!! Approche alternative (uniquement pour Windows )

 1. Automation of windows can be done using Autoit 
2. Install Autoit and SciTe Script editor 
3. Autoit code :(imageupload.au3)

WinActivate("File Upload");  for chrome use "open" that is the name of the window that pops 
send("D:\images\image1.png");  path of the file
Send("{ENTER}")

4. compile it to get an .exe file(imageupload.exe)
5. Now from python call the .exe file like

import os
import os.system('C:\images\imageupload.exe') #path of the .exe file

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X