我是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'));
}
答案 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
});
});
});