这是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);
}
);
}
);
所以,在量角器测试类中,我可以用exurle
获得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;
答案 0 :(得分: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'
}
};
并通过命令行将值传递给全局变量as -
protractor conf.js --params.env 'dev'