Protractor 无法在量角器中设置baseurl永久

Protractor 无法在量角器中设置baseurl永久,protractor,Protractor,我像这样运行量角器 protractor --params.env=q q表示质量保证。这个量角器 var CommonPageObject = require('./e2e/commonPageObject'); suites: { login: './e2e/account/login/*.js' }, //for console params. example console command: protractor --params.env=q

我像这样运行量角器

protractor  --params.env=q
q表示质量保证。这个量角器

  var CommonPageObject = require('./e2e/commonPageObject');


    suites: {
        login: './e2e/account/login/*.js'
},
 //for console params. example console command: protractor  --params.env=q
    params: {
            env: 'qa',//can be local, prod or qa default is qa for environment
    },
     onPrepare: function () {
            var commonPageObject = new CommonPageObject();
            commonPageObject.prepareVariables();


       }
这是公用页

    this.prepareVariables = function () {console.log("xx",browser.params.env);
        var env = browser.params.env;
        this.setEnvironment(env);
        this.setBaseUrl(env);
    };
  //can be local, prod or qa. local = 2, qa = 0, prod=1
    this.setEnvironment = function (env) {
        if(env.includes("l")){
            environment = 2;
        }
        else{
            if(env.includes("p")){
                environment = 1;
            }
            else{// qa
                environment = 0;
            }
        }console.log("environment",environment);
    };

    //to get enviroment qa=0, prod=1, local=2 default=qa
    this.getEnvironment = function () {
        return environment;
    };

    this.setBaseUrl = function (env) {
        if(env.includes("q")){
            baseUrl = "http://xxxx.qa.xxx.com:8080";
        }
        else{
            if(env.includes("p")){
                baseUrl = "https://xxxxx.com";
            }
            else{
                baseUrl = "localhost:8080";
            }
        }console.log("baseUrl",baseUrl);
    };

    this.getBaseUrl = function () {console.log("getBaseUrl",baseUrl);
        return baseUrl;
    };
当我运行时,输出是
量角器--params.env=q

  xx q
environment 0
baseUrl http://xxx.qa.xxxx.com:8080
Started
getBaseUrl undefined
FgetBaseUrl undefined
F

当测试开始时,它变得未定义。那是什么?为什么commonpage对象页面变量不能保留在堆栈中?那么,我应该在每次测试之前为每个测试调用这些方法吗?还是我做错了什么?

您的
commonPageObject
范围仅存在于
onPrepare
方法的上下文中。这不会传输到其余的等级库文件。您应该做的是将
浏览器URL
绑定到一个全局变量。量角器有一个内置的:
browser.baseUrl

this.setBaseUrl = function (env) {
    if(env.includes("q")){
        browser.baseUrl = "http://xxxx.qa.xxx.com:8080";
    }
    else{
        if(env.includes("p")){
            baseUrl = "https://xxxxx.com";
        }
        else{
            baseUrl = "localhost:8080";
        }
    }console.log("baseUrl",baseUrl);
};

this.getBaseUrl = function () {console.log("getBaseUrl",browser.baseUrl);
    return browser.baseUrl;
};
设置好后,在spec文件中,现在可以执行
browser.get('/some/path')
应该解析为
browser.baseUrl+'/some/path'