2016-12-17 92 views
1

我跑量角器这样广东话设置永久性的BaseURL在量角器

protractor --params.env=q 

Q表示QA。这量角器的conf

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; 
    }; 

输出是thhat protractor --params.env=q当我运行

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

测试开始时,它变得不确定。那是什么?为什么commonpage对象页面变量不能保存在堆栈中?那么,我应该在每个测试前的每个测试中调用这些方法吗?或者我做错了什么?

回答

2

您的范围commonPageObject只存在于onPrepare方法的上下文中。这不会转移到其余的spec文件。你应该做的是把你的browserUrl绑定到一个全局变量。量角器已建成之一: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; 
}; 

一旦你的browser.baseUrl设置,在规范的文件,你现在可以做browser.get('/some/path');应解析为browser.baseUrl + '/some/path'