J'ai écrit le code suivant (modèle d'objet page). Fonctionne correctement. Cependant, je n'aime pas ça, parce que je ne peux pas supprimer "then" de "pressHelpLink". Au lieu de cela, ajoutez le code dans getElementByLink.comment bien résoudre le sélénium promesse? protractor
Je voudrais voir ElementFinder Promise (au lieu de ManagedPromise) à la suite de getElementByLink ("Aide")
Comment résoudre bien la promesse de sélénium?
var self = Page.create({
url: {value: ''},
// function:
getElementByLink: {
value: function (link) {
return element.all(by.repeater('items')).then(function (el) {
var my_array = el.map(function (el) {
return el.element(self.by.xpath('a'));
});
var element_array_finder = protractor.ElementArrayFinder.fromArray(my_array);
var element = element_array_finder.filter(function (el) {
return el.getText().then(function (text) {
return text === link;
})
});
return element;
}).then(function (element) {
world.expect(element.length).equal(1);
return element[0];
});
}
},
// elements:
HelpLink: {
get: function() {
return self.getElementByLink('Help');
}
},
// method:
pressHelpLink: {
value: function() {
return self.HelpLink.then(function (el) {
return el.click()
});
}
},
});
Avec cette méthode, je peux raccourcir le code. Mais sur le site peut se produire plusieurs de ces éléments. – flig