对于PageObject,我们在页面底部有按钮/链接。我们必须向下滚动到底部才能点击。
var ContactAddPage = function() {
...
this.btnAdd = element(by.id('btnAdd'));
this.add = function() {
scrollToBottom();
this.btnAdd.click();
};
function scrollToBottom(){
browser.executeScript('window.scrollTo(0,10000);');
}
};
由于scrollToBottom()
将在许多其他页面对象中使用,我假设我们可以将它重构为分隔符文件,并以某种方式require()
将其重构到页面对象中。但是怎么做呢?
对于规范文件,会有一些常见的功能,例如在beforeAll()
中使用不同的角色登录并在afterAll()
中注销。检查网址对每个网页也很常见:
function loginAs(role) {
var loginPage = new LoginPage();
loginPage.login(role);
}
function logOut() {
var lnkLogOff = element(by.linkText('Log off'));
if (element(by.linkText('Log off')).isPresent()) lnkLogOff.click();
}
function expectRouteToBe(expectUrl) {
expect(browser.getCurrentUrl()).toBe(browser.baseUrl + expectUrl);
}
同样的问题:将它们移出的正确方法是什么?require()
它们回来了?
答案 0 :(得分:1)
我们在量角器e2e测试中有类似的东西。我们为测试中使用的可重用功能创建了一组辅助库。
示例:
创建helpers.js
文件:
var Helpers = function() {
this.scrollToBottom = function () {
browser.executeScript('window.scrollTo(0,10000);');
};
};
module.exports = new Helpers();
要求并在您的Page Object中使用它:
var helpers = require("./helpers.js");
var ContactAddPage = function() {
this.btnAdd = element(by.id('btnAdd'));
this.add = function() {
helpers.scrollToBottom();
this.btnAdd.click();
};
};
module.exports = ContactAddPage;
答案 1 :(得分:1)
您可以使用导出和原型继承扩展模块...然后您可以在任何或所有页面中使用方法。例如。类似的东西:
basePage.js:
var BasePage = function() {
this.loginAs = function(role) {
this.login(role);
};
...
};
module.exports = new BasePage();
然后扩展任意数量的页面:
var basePage = require('./basePage.js');
var MainPage = function() {
this.btnAdd = element(by.id('btnAdd'));
this.add = function() {
this.scrollToBottom();
this.btnAdd.click();
};
this.scrollToBottom = function() {
browser.executeScript('window.scrollTo(0,10000);');
};
};
MainPage.prototype = basePage;
module.exports = new MainPage();
然后在您的规范中,您可以:
var mainPage = require("../pages/mainPage.js");
...
it('should login and click add', function() {
mainPage.loginAs(role);
mainPage.btnAdd.click()
...
});
希望有帮助...