2016-12-17 2 views
1

Я бег транспортира как этотБруса установить BaseUrl постоянных в транспортире

protractor --params.env=q 

д означает QA. Это транспортир конф

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. Это не передается остальным файлам спецификаций. Что вы должны сделать, это привязать ваш 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'.

Смежные вопросы