Comment faire pour télécharger un fichier ( image ) avec le sélénium, le python
Comment télécharger une photo sur une application web avec le sélénium outil de test? Je suis à l'aide de python.
J'ai essayé beaucoup de choses, mais rien n'a fonctionné.
- J'ai posté un [répondre ici à l'aide de python][1]. [1]: stackoverflow.com/a/11872608/471376
Vous devez vous connecter pour publier un commentaire.
De téléchargement de contrôle d'entrée s'ouvre un dialogue native (c'est fait par le navigateur), en cliquant sur la commande ou le bouton parcourir via le Sélénium permettra juste de la pop, le dialogue et le test de l'accrocher.
La solution de contournement consiste à définir la valeur de l'upload d'entrée via JavaScript (en Java, il est fait via JavascriptExecutor) et puis soumettez le formulaire.
Voir cette question pour des exemples en C#, je suis sûr qu'il y a aussi une façon de faire des appels JavaScript, Python, mais je n'ai jamais utilisé le Sélénium bindings Python
Ce que je fais est-ce (assurez-vous que drv est une instance de webdriver):
puis trouver votre bouton "soumettre" et cliquez dessus.
os.getcwd()
et où dans votre exempleimage.png
est situé sur votre système de fichiers.os.getcwd()
renvoie le répertoire de travail courant.image.png
est situé juste à côté de l'exécution d'un script dans le même répertoire.J'ai ajouté une réponse pour tous ceux qui cherchent à utiliser les traiter avec l'ennuyeux msofiledialogs. C'est un travail hors de saravanan de la solution proposée, mais plus étoffé pour Python.
J'ai eu un problème similaire avec un script, je travaille pour une entreprise sur le côté. Je suis d'essayer de télécharger des documents pour les clients d'une entreprise, mais en raison de la façon dont leur site, je ne pouvais pas utiliser send_keys pour envoyer directement le chemin, de sorte que j'ai dû compter sur msofiledialog.
Vous avez seulement besoin d'installer AutoIt
https://pypi.python.org/pypi/PyAutoIt/0.3 ou tout simplement "pip install-U pyautoit" par le biais de la cmd écran
type "importer autoit" sur votre page script
Tapez la commande suivante avant de la boîte de dialogue de fichier apparaît dans votre script:
autoit.win_active("Ouvrir")
autoit.control_send("Ouvrir","Saisie1",r"C:\Users\uu\Desktop\TestUpload.txt")
autoit.control_send("Ouvrir","Saisie1","{ENTER}")
Il va chercher le dialogue d'ouverture de fichier de la fenêtre et remplissez-le et appuyez sur entrée.
"Open" est le titre de mon fichier boîte de dialogue de l'écran. Mettre le titre de la vôtre à la place de "l'Ouvrir". Il ya des façons plus créatives d'utiliser AutoIt fonctions, mais c'est une question facile, moyen simple pour les débutants.
Edit: NE le font PAS. NE PAS utiliser control_send sur la plupart des choses si vous pouvez l'éviter. Il a bien connue de la question de l'envoi erronée du texte. Dans mon cas, le côlon dans mon chemin d'accès au fichier a été transformé en un point virgule. Si vous avez besoin d'envoyer des touches d'entrée, il devrait être bon, mais si vous avez besoin d'envoyer du texte, utilisez control_set_text. Il a la même syntaxe.
Tous ces approche ne fonctionnent pas avec l'image moderne uploaders dans olx !!!
Approche Alternative (uniquement pour windows )
Je suis en utilisant beaux-uploader, l'exécution de sélénium tests avec pytest et cela a fonctionné pour moi:
Pas de formulaire de soumission ou de la touche Enter est nécessaire dans mon cas.
Merci pour toutes ces réponses! Il a beaucoup aidé!
Permettra de résoudre le problème
J'ai utilisé ci-dessous format de script pour télécharger les images. Cela peut vous aider.
si vous n'avez pas l'ID de l'objet ,vous pouvez utiliser xpath ou sélecteur css en conséquence.
À l'aide de splinter :
navigateur.attach_file('file_chooser_id',fully_qualified_file_path)
Voici le code que j'ai utilisé:
Imagepath = "C:\User\Desktop\image.png"
driver.find_element_by_xpath('//html/body/input').send_keys(Imagepath)
driver.find_element_by_xpath('//html/body/button').click()
J'accepte la Réponse par karloskar. Remarque Il n'est pas de travail pour FireFox (59). Et il fonctionne avec Chrome que le Pilote.
code complet pour réaliser de téléchargement de fichiers à l'aide de autoit outil.
u pouvez simplement copier coller ce et u peuvent s'exécuter, il va marcher, car il est une acti-démo en temps.
ci-dessous le contenu de autoit code:
télécharger autoIt et autoIt SCITE d'outils de l'éditeur.
une fois cela fait installer autoit et de les ouvrir l'éditeur scite et de coller le code ci-dessus et l'enregistrer avec .au3 extension et une fois enregistré, cliquez-droit sur le fichier et sélectionnez compiler le script(x64), maintenant .exe fichier est créé.
maintenant utiliser le code ci-dessous:
Un moyen très facile de contrôler les composants comme les fenêtres de sélection de fichier (ou tout simplement votre système d'exploitation en général), c'est en utilisant pyautogui. Vous pouvez installer pyautogui par pip