如何在 Angularjs Protractor 中使用系统环境变量?

Posted

技术标签:

【中文标题】如何在 Angularjs Protractor 中使用系统环境变量?【英文标题】:How can I use System Environment Variables in Angularjs Protractor? 【发布时间】:2014-06-07 03:21:51 【问题描述】:

我的计划是将用户名和密码存储为系统环境变量,并在 Angularjs Protractor 配置文件中引用它们。我在/etc/environment 中定义了变量。这是我迄今为止尝试过的:

params: 
  login: 
    user: $E2E_USER,
    pass: $E2E_PASS
  

我也试过这个:

params: 
  login: 
    user: process.env.E2E_USER,
    pass: process.env.E2E_PASS
  

任何帮助将不胜感激!

【问题讨论】:

我模拟了您的第二种方法(也用于github.com/angular/protractor/blob/master/spec/ciConf.js)并且效果很好——您在使用process.env.E2E_USER 等时遇到了哪个错误? 你也可以启动node命令行并检查console.log(process.env)给你的列表——看看E2E_USERE2E_PASS是否真的存在于你的环境中。 process.env.E2E_USERundefiend。当我打印process.env 时,我在列表中看不到E2E_USER。我在/etc/environment 中定义了变量,它应该在其他地方吗?谢谢! 我会选择 export 你找到自己的方式。一切都好:) 【参考方案1】:

你必须在 NodeJS 中使用process.env.YOUR_ENV,例如在 onPrepare 函数中,而不是直接在 params 中:

exports.config = 
    onPrepare: function() 
        //load env variables for testing
        if (typeof process.env.URL !== "undefined") 
            browser.baseUrl = process.env.URL;
            console.log('Base URL = ' +process.env.URL);
        
,
params:  ...

【讨论】:

我正在尝试使用 angular2 和量角器来实现相同的目标,但没有运气。当我控制台日志process.env 时,我看不到任何环境变量。我该如何解决我的问题??【参考方案2】:

我使用了export E2E_USER=username,并且成功了。

【讨论】:

我可以澄清一下:process.env.E2E_USER 有效。此答案中的 export 命令仅设置环境变量 E2E_USER。我想当 OP 提出问题时,变量没有设置。

以上是关于如何在 Angularjs Protractor 中使用系统环境变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Code 中使用 Typescript 和 Jasmine 框架编写 Protractor 测试脚本?

25个超有用的 AngularJS Web 开发工具

更新到 Angular 2 后,无法在 Firefox 上通过 Protractor 运行 Selenium

Protractor Chrome 无头混合内容问题

Angularjs E2E test Report/CoverageReport - 使用Gulp

WebApp的自动测试工具: protractor和selenium