在用于AngularJS测试的量角器中定义页面对象时使用是否有优势?

在用于AngularJS测试的量角器中定义页面对象时使用是否有优势?,angularjs,selenium-webdriver,protractor,Angularjs,Selenium Webdriver,Protractor,我已经看到了两个关于如何创建页面对象的示例: 第一个例子: var LoginPage = function() { this.userName = element(by.input('login.userName')); this.password = element(by.input('login.password')); } module.exports = new LoginPage(); 第二个例子: AngularPage.prototype = Object.cre

我已经看到了两个关于如何创建页面对象的示例:

第一个例子:

var LoginPage = function() {
   this.userName = element(by.input('login.userName'));
   this.password  = element(by.input('login.password'));
}
module.exports = new LoginPage();
第二个例子:

AngularPage.prototype = Object.create({}, {
    todoText: { get: function () { return element(by.model('todoText')); }},
    addButton: { get: function () { return element(by.css('[value="add"]')); }},
  }}
});

module.exports = AngularPage;

有人能解释一下这两者的区别吗。现在是否推荐(AngularJS团队使用)其中一个而不是另一个?请注意,我正在使用1.0.0版本的量角器进行测试。

当您使用第一种样式时,您将在需要模块时获得对象的实例。例如:

var angularPage = require('angular-page.js');
angularPage.create();
使用第二种语法时,您必须自己创建一个新实例:

var AngularPage = require('angular-page.js');
var page = new AngularPage();
page.create();

我更喜欢第一种语法(
module.exports=newpage()
),因为它较短。如果需要将参数传递给页面对象的构造函数,则必须使用第二种语法(
module.exports=page
)。

Hi..有关于页面对象语法的文档吗?这里是一个例子,感谢分享这些链接。然而,我正在寻找一个链接,它解释了语法,就像你在上面的答案中所做的那样。按照您的解释,语法变得清晰了。然而,这只是一个例子。有很多东西,比如:field1:{get:function(){return smthng;}},field2:{value:function(idx){return smthng_else;}},那么,有没有解释所有语法的链接