Javascript 你的承诺有多好?量角器
我编写了以下代码页对象模式。工作正常。 但是,我不喜欢这样,因为我无法从pressHelpLink中删除then。而是在getElementByLink中添加代码 我希望看到ElementFinder Promise而不是ManagedPromise作为GetElementByLink帮助的结果 你的承诺有多好Javascript 你的承诺有多好?量角器,javascript,selenium,promise,protractor,pageobjects,Javascript,Selenium,Promise,Protractor,Pageobjects,我编写了以下代码页对象模式。工作正常。 但是,我不喜欢这样,因为我无法从pressHelpLink中删除then。而是在getElementByLink中添加代码 我希望看到ElementFinder Promise而不是ManagedPromise作为GetElementByLink帮助的结果 你的承诺有多好 var self = Page.create({ url: {value: ''}, // function: getElementByLink: {
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()
});
}
},
});
为什么不使用cssContainingText?也许像
// elements:
HelpLink: {
get: function () {
return element(by.cssContainingText('a', 'Help');
}
},
// method:
pressHelpLink: {
value: function () {
return self.HelpLink.click()
}
},
使用这种方法,我可以缩短代码。但在网站上可能会出现几个这样的元素。