我碰到了量角器的页面对象的不同类型的语法,我在想,他们的背景是什么,建议采用哪种方式。什么是页面对象的正确的量角器语法?
这是来自Protractor教程的官方PageObject语法。我喜欢它最,因为它是清晰可辨:
use strict;
var AngularHomepage = function() {
var nameInput = element(by.model('yourName'));
var greeting = element(by.binding('yourName'));
this.get = function() {
browser.get('http://www.angularjs.org');
};
this.setName = function(name) {
nameInput.sendKeys(name);
};
this.getGreeting = function() {
return greeting.getText();
};
};
module.exports = AngularHomepage;
不过,我也发现了这个类型:
'use strict';
var AngularPage = function() {
browser.get('http://www.angularjs.org');
};
AngularPage.prototype = Object.create({}, {
todoText: { get: function() { return element(by.model('todoText')); }},
addButton: { get: function() { return element(by.css('[value="add"]')); }},
yourName: { get: function() { return element(by.model('yourName')); }},
greeting: { get: function() { return element(by.binding('yourName')).getText(); }},
todoList: { get: function() { return element.all(by.repeater('todo in todos')); }},
typeName: { value: function (keys) { return this.yourName.sendKeys(keys); }} ,
todoAt: { value: function (idx) { return this.todoList.get(idx).getText(); }},
addTodo: { value: function (todo) {
this.todoText.sendKeys(todo);
this.addButton.click();
}}
});
module.exports = AngularPage;
什么利弊/这两种方法的缺点(除了可读性)?第二个是最新的吗?我已经看到WebdriverIO使用这种格式。
我也从Gitter的一个家伙那里听说,第一个入口是低效的。有人可以向我解释为什么?
非常感谢,这是有道理的:) – anks
@anks,如果您觉得,我的文章帮助您并更正,请勾选正确。 –