Ich habe verschiedene Arten von Syntax für die Seitenobjekte von Protractor gefunden und ich frage mich, was ist ihr Hintergrund und welche Art wird vorgeschlagen.Wie lautet die korrekte Winkelmessersyntax für Seitenobjekte?
Dies ist die offizielle PageObject-Syntax aus dem Tutorial von Protractor. Ich mag es am meisten, weil es klar und lesbar:
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;
Allerdings habe ich auch festgestellt, diese Art:
'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;
Was sind die Vor/Nachteile der beiden Ansätze (abgesehen von Lesbarkeit) Ist der zweite aktuell? Ich habe gesehen, dass WebdriverIO dieses Format verwendet.
Ich habe auch von einem Mann auf Gitter gehört, dass der erste Eintrag ineffizient ist. Kann mir jemand erklären warum?
Vielen Dank, das tut Sinn macht :) – anks
@anks, wenn Sie das Gefühl, meine Post helfen Ihnen und richtig, es bitte als richtig ticken. –