Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

Commit 7240360

Browse files
committed
chore(protractor): speed up calls to then/each/map/reduce
1 parent 30023f2 commit 7240360

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

Diff for: lib/protractor.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,9 @@ var buildElementHelper = function(ptor) {
261261
return self.getWebElements().then(function(parentWebElements) {
262262
var list = [];
263263
parentWebElements.forEach(function(parentWebElement, index) {
264-
var elementFinder = self.get(index); // Wrap in ElementFinder
264+
var elementFinder =
265+
ElementFinder.fromWebElement_(parentWebElement, self.locator_);
266+
265267
var filterResults = filterFn(elementFinder, index);
266268
if (filterResults instanceof webdriver.promise.Promise) {
267269
filterResults.then(function(satisfies) {
@@ -460,8 +462,8 @@ var buildElementHelper = function(ptor) {
460462
var self = this;
461463
return this.getWebElements().then(function(arr) {
462464
var list = [];
463-
arr.forEach(function(webElem, index) {
464-
list.push(self.get(index));
465+
arr.forEach(function(webElem) {
466+
list.push(ElementFinder.fromWebElement_(webElem, self.locator_));
465467
});
466468
return list;
467469
});
@@ -737,6 +739,14 @@ var buildElementHelper = function(ptor) {
737739
};
738740
util.inherits(ElementFinder, webdriver.promise.Promise);
739741

742+
743+
ElementFinder.fromWebElement_ = function(webElem, locator) {
744+
var getWebElements = function() {
745+
return webdriver.promise.fulfilled([webElem]);
746+
};
747+
return new ElementArrayFinder(getWebElements, locator).toElementFinder_();
748+
};
749+
740750
/**
741751
* Create a shallow copy of ElementFinder.
742752
*

0 commit comments

Comments
 (0)