2015-12-11 14 views
6

Sto scrivendo i test nel goniometro che un framework basato su JS e uno stack di selenio per eseguire test. Sto affrontando un problema in cui devo testare il caricamento del file.Test glicemico caricamento file remoto

Problema che sto avendo è il file che sto cercando di caricare è nel pacchetto di test considerando che il nodo di selenio è un server separato, quindi non otterrà il file. Ho provato a usare il descrittore di file anche se il nome del file è impostato, i contenuti non vengono caricati.

Di seguito è riportato lo snippet di codice che ho.

var remote = require('selenium-webdriver/remote'); 
    browser.setFileDetector(new remote.FileDetector()); 
    var absolutePath = path.resolve(__dirname, "../specs/data/baseProducts.csv"); 
    $('input[type="file"]').sendKeys(absolutePath); 

Avete ingressi per lo stesso? Oppure conosci qualcuno che ha scritto test di caricamento di file in JS usando selenio? Il vostro aiuto sarà molto apprezzato

risposta

9

Prima di tutto, per il caricamento di file per funzionare con i server remoti selenio, è necessaria l'ultima protractor (attualmente, 3.0.0) (che avrebbe l'ultimo pacchetto selenium-webdriver nodejs come dipendenza).

Poi, queste due linee sono fondamentali per essere in grado di inviare i file attraverso la rete al nodo di selenio:

var remote = require('selenium-webdriver/remote'); 
browser.setFileDetector(new remote.FileDetector()); 

E, si dovrebbe ora essere in grado di caricare i file come se si esegue i test a livello locale.


di lavoro completo di test (testato su BrowserStack, per me funziona perfettamente):

var path = require('path'), 
    remote = require('selenium-webdriver/remote'); 

describe("File upload test", function() { 
    beforeEach(function() { 
     browser.setFileDetector(new remote.FileDetector()); 
     browser.get("https://angular-file-upload.appspot.com/"); 
    }); 

    it("should upload an image", function() { 
     var input = element(by.model("picFile")), 
      uploadedThumbnail = $("img[ngf-src=picFile]"); 

     // no image displayed 
     expect(uploadedThumbnail.isDisplayed()).toBe(true); 

     // assuming you have "test.jpg" right near the spec itself 
     input.sendKeys(path.resolve(__dirname, "test.jpg")); 

     // there is a little uploaded image displayed 
     expect(uploadedThumbnail.isDisplayed()).toBe(true); 
    }); 
}); 

vedere anche questioni rilevanti:

+0

ho dovuto caricare i file in diversi file spec diversi, così ho aggiunto che la sezione 'onPrepare()' del file protractor.config invece. Funziona alla grande. Grazie per la risposta. – HaC

0

Grazie a @alecxe per la sua risposta!

Ho appena avuto questa situazione, cercando di caricare alcuni file su BrowserStack. Nel mio caso sto usando Cucumber - Protractor - NodeJs - BrowserStack. Questo codice è già stato testato, lavorando in ambiente locale e BorwserStack.

let path = require('path'); 
let remote = require('selenium-webdriver/remote'); 

this.When(/^I upload a file$/,() => { 
    browser.setFileDetector(new remote.FileDetector()); 

    var fileToUpload = '../image_with_title.jpg'; 
    var absolutePath = path.join(__dirname, fileToUpload); 

    page.fileupload.sendKeys(absolutePath); 
}); 

La linea magica è:

let remote = require('selenium-webdriver/remote');