可以"它"使用页面对象在不同的​​spec文件中多次调用块

时间:2016-06-07 20:29:03

标签: angularjs jasmine protractor

我是Protractor和Page Objects的新手。我试图让标题显示在多个页面上。我有一个header_page.js和一个header_spec.js。我可以在header_spec.js(目前只指向主页)中验证标题是否存在一次。我想做的是每次访问页面时都要调用标题测试。

var HomePage = require('../pages/home_page.js');
var HeaderPage = require('../pages/header_page.js');

describe('When visiting a page'. function(){
var headerPage = new HeaderPage();
var inbox_page = new HomePage();

beforeEach(function () {
    inbox_page.visit();
  });

it('header menu selector should be present', function(){
header_menu = headerPage.hdr_menu;
header_menu.click();
expect('header_menu').not.toBe(null);
  });
 });
});

我不知道如何从page2_spec.js..page3_spec.js调用此测试,因为每个页面都不同但应该都包含标题。我试图避免代码重复,并希望避免调用"它"从每个页面阻止。我是否使用帮助文件或者我可以在header_page.js中移动它。当前看起来像这样:

module.exports = function(){
 this.hdr_menu = element(by.css('#pick-group-btn'));
 this.hdr_img = element(by.css('PeopleAdmin logo'));
 }

1 个答案:

答案 0 :(得分:0)

您可以通过将规范包装在函数中并将其导出“需要”该模块来调用其他规范的测试规范。因此,在您的情况下,您可以将header_spec.js导出到其他模块,例如page2_spec.js或page3_spec.js :

          var HomePage = require('../pages/home_page.js');
          var HeaderPage = require('../pages/header_page.js');

          var commHeader = function(){

          describe('When visiting a page'. function(){
          var headerPage = new HeaderPage();
          var inbox_page = new HomePage();

          beforeEach(function () {
          inbox_page.visit();
          });

        it('header menu selector should be present', function(){
         header_menu = headerPage.hdr_menu;
         header_menu.click();
        expect('header_menu').not.toBe(null);
         });
        });
        });
         }

    module.exports = commHeader;

然后在你的page2_spec.js文件中你可以像这样导入这个模块:

       var commHeader = require('your path to spec/commHeader.js');

       describe('When visiting page 2 validate Header first'. function(){
        var headerTest = new commHeader();
           headerTest.commHeader();

       it('page 2 element validations', function(){
       //here the page 2 test goes
        });
       });
       });