1

这是 gulpfile:

gulp.task(
    'protractor', function () {
        var configObj = {
            configFile: config.test + 'protractor.conf.js'
        };
        configObj['args'] =[];//to be able to add multiple parameters

        if (argv.suite) {
            configObj['args'].push (
                '--suite',
                argv.suite
            );
        }

        if (argv.env) {

            if(argv.env.includes("q")){//qa
                argv.baseUrl = "http://xx.qa.yy.com:8080";
            }
            else{//prod
                if(argv.env.includes("p")){
                    argv.baseUrl = "https://xx.yy.com";
                }
                else{//local
                    argv.baseUrl = "localhost:8080";
                }
            }

            configObj['args'] .push(
                '--baseUrl',
                argv.baseUrl
            );
        }
        return gulp.src([])
            .pipe(plumber({errorHandler: handleErrors}))
            .pipe(protractor(configObj))
            .on(
                'error', function () {
                    gutil.log('E2E Tests failed');
                    process.exit(1);
                }
            );
    }
);

所以,在量角器测试类中,我可以得到baseurl,例如

 this.getBaseUrl = function () {
    return browser.baseUrl;
};

,

因为我设置在这里

            configObj['args'] .push(
                '--baseUrl',
                argv.baseUrl
            );

但我无法获得环境。它设置在这里

从控制台命令

gulp protractor --env l --suite logout

我可以在 consloeoutput 中看到

argv.env

但我不能从量角器调用它。我试过browser.env 但没有奏效。我怎样才能做到这一点?

我也用 yargs

var argv = require('yargs')//setting default enviroment to qa for testing
    .default({ env : 'qa' })
    .argv;
4

1 回答 1

4

量角器中没有env全局变量或命令行选项,您必须使用params. 你可以做这样的事情-

 if (argv.params.env) {

        if(argv.params.env.includes("q")){//qa
            argv.baseUrl = "http://xx.qa.yy.com:8080";
        }
        else{//prod
            if(argv.params.env.includes("p")){
                argv.baseUrl = "https://xx.yy.com";
            }
            else{//local
                argv.baseUrl = "localhost:8080";
            }
        }

现在从控制台命令你可以调用它

gulp protractor --params.env 'test' --suite logout

您也可以访问它调用browser.params.env

您始终可以在配置文件中的量角器中设置全局变量:

exports.config = {
//other config options

params: {
    env: 'qa'
}

};

并通过命令行将值传递给全局变量 -

protractor conf.js --params.env 'dev'
于 2016-12-19T10:53:05.407 回答