1

Je veux télécharger un fichier image dans un rapporteur. le problème est que je ne peux pas obtenir l'élément "input[type = "file"]" sans cliquer sur le bouton de téléchargement.Comment fermer le dialogue de téléchargement de fichier après avoir cliqué sur le bouton de téléchargement dans le rapporteur

Lorsque je clique sur le bouton de téléchargement, la fenêtre de dialogue de téléchargement de fichier s'ouvre.

j'ai essayé

browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); mais il ne fonctionne pas.

C'est ce que je fais:

var image = '../images/image1.png'; 
var absPathImg = path.resolve(__dirname, image); 
element(by.id('uploadImage')).click(); 
browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); 
element(by.css('input[type=file]')).sendKeys(absPathImg); 
element(by.id('upload')).click(); 

Comment puis-je fermer le dialogue de téléchargement de fichiers pour télécharger une image?

Répondre

0

Au lieu de cliquer sur ESCAPE, pourquoi ne pas simuler le ENTER appuyer sur la touche pour simuler une personne entrant dans le chemin et appuyez sur la touche ENTER pour télécharger l'image. Je le fais dans mon code et cela fonctionne parfaitement bien.

var path = require('path') 
this.fileUploadOne = element(by.css('locator_to_element')); 

var fileUpload = 'path_of_file_to_upload' 

    absolutePath = path.resolve(__dirname,fileUpload); 
    console.log(absolutePath); 
    this.fileUploadOne.sendKeys(absolutePath); 
    browser.actions().sendKeys(protractor.Key.ENTER).perform(); 

    //just for debugging purposes. 
    browser.sleep(20000); 
+0

comme je l'ai mentionné ci-dessus, élément "element (by.css ('locator_to_element'));" peut être présenté après la fermeture du fichier télécharger le dialogue OS. Je dois fermer cela avant que j'appelle des actions de navigateur. –

0

Essayez-le comme ceci. J'ai utilisé cela pour Protractor, mais je pense que c'est similaire pour Selenium. J'ai également un problème pour la boîte de dialogue Fichier Windows qui ne se ferme pas. Voici comment j'ai résolu cela:

élément (by.css ('elementForOpenDialog')). SendKeys (absPathImg);

Envoyer les clés à l'élément qui va ouvrir la boîte de dialogue, ne pas cliquer sur l'élément pour ouvrir la boîte de dialogue. Il suffit d'envoyer à cet élément le chemin absolu et il va télécharger sans ouvrir la boîte de dialogue. Ça a marché pour moi. Bonne chance!

+0

C'est le moyen d'éviter le dialogue du système d'exploitation. Mais dans mon cas, vous devez cliquer sur le bouton pour télécharger la photo. et lorsque vous cliquez sur le bouton de téléchargement, la boîte de dialogue OS apparaît. C'est le prototype dans mon cas. Je dois fermer le dialogue du système d'exploitation. Sans faire cela, je ne peux pas envoyer le chemin à l'élément. –

+0

Je vois le point. J'ai eu le même problème avec le dialogue du système d'exploitation, et j'ai résolu ce problème en évitant le dialogue. –