2014-04-17 9 views
44

Utilizzo il goniometro per eseguire alcuni test end-to-end e mi piacerebbe inserire le credenziali di accesso tramite la riga di comando anziché memorizzarle in un file spec. Ho trovato un post in cui qualcuno ha utilizzato process.argv.forEach, ma come posso memorizzare quei valori e usarli in un altro file spec? Ho un file chiamato login-spec.js in cui mi piacerebbe utilizzare gli argomenti della riga di comando.Come posso utilizzare gli argomenti della riga di comando in Angularjs Protractor?

Grazie!

risposta

83

Nella reference config questa sezione può essere interessante:

// The params object will be passed directly to the protractor instance, 
    // and can be accessed from your test. It is an arbitrary object and can 
    // contain anything you may need in your test. 
    // This can be changed via the command line as: 
    // --params.login.user 'Joe' 
    params: { 
    login: { 
     user: 'Jane', 
     password: '1234' 
    } 
    }, 

ed è possibile accedere all'oggetto params come questo nel codice: browser.params.login.user

Quindi nel tuo caso se si chiama goniometro in questo modo:

protractor ... --params.login.user=abc --params.login.password=123 

È possibile accedere a queste variabili nel codice come questo:

browser.params.login.user e browser.params.login.password

+3

se si tenta e passa un array sulla riga di comando "goniometro --params.myArray = [1,2,3]" sarà visto come una stringa che sarà necessario per JSON. parse (browser.params.myArray); – rob

+2

Un'altra breve nota, il segno = sulla riga di comando è facoltativo. Quindi "goniometro --params.myNum = 50 ..." equivale a "goniometro --params.myNum 50 ..." Inizialmente avevo pensato che il commento nella risposta fosse sbagliato. – rob

+0

Funziona come un fascino! Sebbene, dal momento che prende le argomentazioni come stringhe, fa un po 'di casino con i booleani. Il mio suggerimento: se hai dei valori predefiniti nel tuo codice, impostali su false e sostituiscili dalla CLI se necessario (ad esempio, goniometro ... --params.myFlag = true), poiché entrambi "true" e "false" sono in realtà falsy . Se devi passare falso tramite la CLI, devi usare l'unica stringa falsy che c'è: goniometro ... --- params.myFlag = (lascialo vuoto alla fine, sì funziona, così male come sembra !) – schonarth

Problemi correlati