2014-04-17 34 views
44

我正在使用量角器來執行一些端到端測試,我想通過命令行傳入登錄憑據,而不是將它們存儲在spec文件中。我找到了一篇文章,其中有人使用process.argv.forEach,但我如何存儲這些值並將它們用於另一個spec文件?我有一個名爲login-spec.js的文件,我想使用命令行參數。如何在Angularjs量角器中使用命令行參數?

謝謝!

回答

83

reference config這部分可以是有趣:

// 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' 
    } 
    }, 

,您可以訪問params對象像這樣在你的代碼:如果您調用量角器這樣browser.params.login.user

所以你的情況:

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

您可以在代碼中訪問這些變量是這樣的:

browser.params.login.userbrowser.params.login.password

+3

如果嘗試與在命令行上傳遞數組「量角器--params.myArray = [1,2,3]」,可以看作是一個字符串,則需要JSON。解析(browser.params.myArray); – rob

+2

另一個快速註釋,命令行上的=號是可選的。所以「量角器--params.myNum = 50 ...」等價於「量角器--params.myNum 50 ...」原本我以爲答案中的評論是錯誤的。 – rob

+0

工程就像一個魅力!雖然,由於它將參數作爲字符串來處理,所以處理布爾值時會造成混亂。我的提示:如果你的代碼中有默認值,將它們設置爲false,並根據需要從CLI覆蓋它們(例如量角器... --params.myFlag = true),因爲「真」和「假」實際上都是虛假的。 如果您必須通過CLI傳遞false,則必須使用唯一的僞造字符串:量角器... --- params.myFlag =(在結尾保留它爲空,是的,它的工作方式,因爲它看起來不對!) – schonarth

相關問題