2016-12-17 1 views
1

I Winkelmesser ähnlicheCant gesetzt baseurl permanent in Winkelmesser

protractor --params.env=q 

q laufen bedeutet QA. Diese Winkelmesser 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(); 


     } 

ist dies gemeinsame Seite

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

Ausgang ist thhat protractor --params.env=q wenn ich

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

es nicht definiert wird, wenn Tests beginnt. Was ist das? Warum kann die Variablenseite der Objektseite nicht im Stapel gehalten werden? SO, soll ich diese Methoden für jeden Test vor jedem aufrufen? Oder mache ich etwas falsch?

Antwort

2

Ihr Anwendungsbereich der commonPageObject existiert nur im Rahmen der onPrepare Methode. Dies wird nicht auf den Rest der Spezifikationsdateien übertragen. Was Sie tun sollten, ist Ihre browserUrl an eine globale Variable zu binden. Transporteur hat ein Jahr: 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; 
}; 

Sobald Ihr browser.baseUrl festgelegt ist, in der Spec-Dateien, können Sie jetzt tun browser.get('/some/path');, die browser.baseUrl + '/some/path' lösen sollte.