0
次のコード(ページオブジェクトパターン)を書きました。正しく動作します。 しかし、私は "pressHelpLink"から "then"を取り除くことができないので、これは好きではありません。代わりにgetElementByLinkにコードを追加します。どのようにセレンの約束をうまく解決しますか?分度器
私はセレンの約束を解決する方法きれい
getElementByLink(「ヘルプ」)の結果として、(代わりにManagedPromiseの)ElementFinder約束をご覧になりたいですか?
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()
});
}
},
});
この方法では、コードを短縮できます。しかし、サイト上でこのような要素がいくつか発生する可能性があります。 – flig