2016-12-17 93 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'