2017-03-09 52 views
1

我可能有不尋常的情況,我必須從幫助器文件中的元素中獲取文本,然後在spec文件中比較此文本。例如:量角器:從spec文件中的幫助器文件中使用變量

兩個頁面文件:

this.matchText = function(elem) { 
    return elem.getText(); 
}; 

助手文件:

 // page objects 
     var calculationPage = require('../calculation_page/calculation_page.js'); 

     // variables 
     var globalPrice = ""; 

     module.exports = exports = function() { 
      describe('... 
       it('... 
        // initialize page object 
        var calculation = new calculationPage(); 

        // store price into global variable 
        calculation.matchText(calculation.price).then(function(text) { 
         globalPrice = text; 
        }); 

        // verify price equals expected 
        expect(calculation.matchText(calculation.priceSum)).toContain(globalPrice); 

        ??? 
       }); 
      }); 
     } 

如何globalPrice存儲爲可能被傳遞到spec文件中的變量?

規格文件:

// page objects 
var homePage = require('../home_page/home_page.js'); 

// helpers 
var getPrice = require('../helpers/get_price.js'); 

describe('... 
    it('... 

     // helper - get price 
     getPrice(); 

     // initialize page object 
     var home = new homePage(); 

     // verify if price equals expected 
     expect(home.matchText(home.price)).toContain(???); 
    }); 
}); 

如何讀取從規範文件的輔助文件的全局變量?

+0

爲什麼你'describe','it',和'在你的助手文件expect'塊? – Gunderson

+0

因爲目前我在一個規範中稱這些爲助手,但會將它們更改爲spec文件。 – jurijk

回答

1

您可以將您需要的任何值全局轉儲到量角器全局對象 - browser

讓我們說..在助手文件中,您需要存儲值。然後做到這一點 - browser.globalPrice = text

然後這個值將在您的spec文件中可用。從browser對象訪問它像任何其他價值expect(home.matchText(home.price)).toContain(browser.globalPrice);

請參閱我的回答@Protractor: initialise Global variable in one js and use the same var in other js

+0

謝謝!就是這個! ;)正是我在找什麼。 – jurijk

+0

只是一個簡單的問題;)我可以用你寫的方式存儲任何東西嗎? – jurijk

+0

@jurijk ..歡迎光臨!是的,你可以存儲任何東西......複雜的對象,引用任何東西 – AdityaReddy