2016-04-07 4 views
1

Ich möchte eine Datei mit dem Progractor-Test hochladen.Hochladen einer Datei mit dem Progractor-Test Fehler

Ideal-Szenario:

  1. Auf dem Formular zuerst sollte der Benutzer klicken Sie auf ‚Datei hochladen‘ klicken
  2. Als nächstes erscheint ein Fenster, in dem sie für ihre Datei
  3. suchen und schließlich die Datei gewählt.

createJobTest.js

it('should click upload file button', function() { 
     createJobPage.step5UploadFile.click().then(function(){ 
      browser.waitForAngular(); 
      }); 
     }); 
    }) 


    var path = require('path'); 

    it('should upload a file', function() { 
     var fileToUpload = '../desktop/test.txt', 
      absolutePath = path.resolve(__dirname, fileToUpload); 

     $('input[type="file"]').sendKeys(absolutePath);  
     $('#uploadButton').click(); 
    }); 

createJobPage.js

this.step5UploadFile = element(by.id('step5--upload-file')); 

createJob.html

<span class="btn btn-blue-one btn-upload" id="step5--upload-file" flow-btn translate="uploadfile"></span> 

Die Upload-Dateifenster öffnet, aber ich bin immer diese Fehlermeldung:

Failed: No element found using locator: By(css selector, input[type="file"]) 

Jede Hilfe sehr geschätzt!

+0

Siehe http://stackoverflow.com/questions/36182407/protractor-upload-file-running-exe-via-protractor/36182733#36182733 – KCaradonna

+0

@KCaradonna Danke für den Kommentar, es versucht, aber immer noch die gleichen Fehler: ( –

+0

) Wenn Sie eine Datei mit Winkelmesser hochladen, müssen Sie nicht auf die Schaltfläche zum Hochladen klicken. Sie senden den absoluten Pfad der Datei, die Sie hochladen möchten, direkt an das Datei-Upload-Element, und Sie haben das richtig gemacht Ich vermute, dass das Element, an das Sie die Datei senden möchten, nicht mehr sichtbar ist, da es unter dem Upload-Dateidialog verborgen ist. Sie können dies lösen, indem Sie den ersten "it" -Block und $ ('# uploadButton') entfernen.) .click(); in Ihrem Code oben. Lassen Sie mich wissen, wenn dies hilft und ich kann es als Antwort einreichen. – KCaradonna

Antwort

0
var path = require('path'); 
     var fileToUpload = '../desktop/test.txt'; 
     var absolutePath = path.resolve('__dirname', fileToUpload); 
     $('input[type="file"]').sendKeys(absolutePath); 
     browser.driver.sleep(100); 
1

1 Weg ist zu sendkeys.

 var fileToUpload =filepath; 
     var absolutePath = path.resolve(__dirname, fileToUpload); // absolute path 
     var fileElement = element(by.css('input[type="file"]')); 
     browser.executeScript("arguments[0].style.visibility = 'visible'; ", fileElement.getWebElement()); 
     fileElement.sendKeys(absolutePath); 

Eine andere Möglichkeit besteht darin, auf dem Desktop-Fenster zu arbeiten. Welches ist die Hauptfunktionalität? Sie können die Antwort von dem folgenden Link beziehen, den ich bereits beantwortet habe.

File upload using autoit

Das ist, was ich in meiner Anwendung verwende.