44
我正在使用量角器來執行一些端到端測試,我想通過命令行傳入登錄憑據,而不是將它們存儲在spec文件中。我找到了一篇文章,其中有人使用process.argv.forEach
,但我如何存儲這些值並將它們用於另一個spec文件?我有一個名爲login-spec.js
的文件,我想使用命令行參數。如何在Angularjs量角器中使用命令行參數?
謝謝!
我正在使用量角器來執行一些端到端測試,我想通過命令行傳入登錄憑據,而不是將它們存儲在spec文件中。我找到了一篇文章,其中有人使用process.argv.forEach
,但我如何存儲這些值並將它們用於另一個spec文件?我有一個名爲login-spec.js
的文件,我想使用命令行參數。如何在Angularjs量角器中使用命令行參數?
謝謝!
在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.user
和browser.params.login.password
如果嘗試與在命令行上傳遞數組「量角器--params.myArray = [1,2,3]」,可以看作是一個字符串,則需要JSON。解析(browser.params.myArray); – rob
另一個快速註釋,命令行上的=號是可選的。所以「量角器--params.myNum = 50 ...」等價於「量角器--params.myNum 50 ...」原本我以爲答案中的評論是錯誤的。 – rob
工程就像一個魅力!雖然,由於它將參數作爲字符串來處理,所以處理布爾值時會造成混亂。我的提示:如果你的代碼中有默認值,將它們設置爲false,並根據需要從CLI覆蓋它們(例如量角器... --params.myFlag = true),因爲「真」和「假」實際上都是虛假的。 如果您必須通過CLI傳遞false,則必須使用唯一的僞造字符串:量角器... --- params.myFlag =(在結尾保留它爲空,是的,它的工作方式,因爲它看起來不對!) – schonarth