Adding global variables via a require Common Function file

左心房为你撑大大i 提交于 2020-01-06 08:46:11

问题


I am doing a POC on switching to Protractor and Jasmine to perform our automated scripting. I'm trying to build a preliminary framework, but I'm having issues trying to translate my concept to reality.

I've set up three files: conf.js, spec.js, and cf.js. Conf.js is testplan-specific configuration file, spec.js contains the actual tests, and cf.js contains the common functions that I will be using through all test plans. I am trying to include a variable in cf.js to contain the starting URL to be used in the browser.get call. So far, I have not been able to get that to work. I've tried declaring it in cf.js before the //commonfunctions// function declaration, as well as within the function itself. What is the proper way to do this?

cf.js

    var commonfunctions = function () {
      global.StartPage = 'http://google.com/';
      this.ccClick = function (clickElement) {
        browser.wait(protractor.ExpectedConditions.visibilityOf(clickElement),
         this.defaultWait);



  browser.wait(protractor.ExpectedConditions.elementToBeClickable(clickElement),
     this.defaultWait);
        clickElement.click();
    };
    // Common text search
      this.ConfirmText = function(testElement, compareString) {
        browser.wait(protractor.ExpectedConditions.visibilityOf(testElement), 
10000);
        expect(testElement.getText()).toEqual(compareString);
      };
    };
    module.exports = new commonfunctions();

spec.js

  beforeEach(function() {
    browser.waitForAngularEnabled(false);
    browser.get(commonfunctions.StartPage);
  });

Right now, it does not navigate to the webpage.


回答1:


This should be possible, I have posted a similar answer before but let me know if you have further concerns about the approach. The approach I took was to require the common function file in the onPrepare as a global variable. This way anything exported from the file is accessible throughout all the tests.

Storing global variable in a separate file for Protractor Tests




回答2:


Your made a mistake at following code:

// cf.js
var commonfunctions = function () {
      global.StartPage = 'http://google.com/';

// spec.js
beforeEach(function() {
  browser.waitForAngularEnabled(false);
  browser.get(commonfunctions.StartPage);
});

// you define `StartPage` to a global variable, not a property of `commonfunctions`, 
thus you shouldn't refer it from `commonfunctions`, but from `global` as following:

browser.get(global.StartPage)

or you define StartPage to be a property of commonfunctions

// cf.js
var commonfunctions = function () {
   this.StartPage = 'http://google.com/';
   // use `this` at here, rather than `global`

// spec.js
beforeEach(function() {
  browser.waitForAngularEnabled(false);
  browser.get(commonfunctions.StartPage);
});



回答3:


Add the below one to your config.js

baseUrl: 'http://google.com/',

To use it in your test as below

browser.get(browser.baseUrl);

Hope this helps you



来源:https://stackoverflow.com/questions/54314893/adding-global-variables-via-a-require-common-function-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!