【发布时间】:2015-07-17 00:02:15
【问题描述】:
我们使用Page Object pattern 已经有一段时间了。它绝对有助于组织端到端测试并使测试更具可读性和简洁性。
正如Using Page Objects to Organize Tests Protractor 文档页面向我们展示的那样,我们将每个页面对象定义为一个函数并使用new 来“实例化”它:
"use strict";
var HeaderPage = function () {
this.logo = element(by.css("div.navbar-header img"));
}
module.exports = HeaderPage;
用法:
"use strict";
var HeaderPage = require("./../po/header.po.js");
describe("Header Look and Feel", function () {
var header;
beforeEach(function () {
browser.get("/#login");
header = new HeaderPage();
});
it("should show logo", function () {
expect(header.logo.isDisplayed()).toBe(true);
});
});
但是,最近在Protractor: Angular testing made easy Google 测试博客文章中,我注意到页面对象被定义为对象:
var angularHomepage = {
nameInput : element(by.model('yourName')),
greeting : element(by.binding('yourName')),
get : function() {
browser.get('index.html');
},
setName : function(name) {
this.nameInput.sendKeys(name);
}
};
这两种引入Page Objects的方式有什么区别?我应该更喜欢一个吗?
【问题讨论】:
-
我们正在制定新的风格指南。它应该很快就会发布。
标签: javascript angularjs testing protractor pageobjects