Skip to content

Instantly share code, notes, and snippets.

@robert-fahey
Last active April 11, 2017 12:14
Show Gist options
  • Save robert-fahey/a899d330be2d5f62d3c8c0926be1b6c3 to your computer and use it in GitHub Desktop.
Save robert-fahey/a899d330be2d5f62d3c8c0926be1b6c3 to your computer and use it in GitHub Desktop.
ElementFinder extensions for Protractor
onPrepare: function() {
require('./elementFinderExtensions');
}
'use strict';
const until = protractor.ExpectedConditions;
var ElementFinder = $('').constructor;
ElementFinder.prototype.waitForElementNotVisible = function waitForElementNotVisible(){
var deferred = protractor.promise.defer();
var self = this;
browser.wait(until.invisibilityOf(self), 100000)
.then(
function success() {
deferred.fulfill('Element no longer visible');
},
function fail() {
deferred.reject('Element still visible');
});
return deferred.promise;
};
ElementFinder.prototype.waitForElementVisible = function waitForElementVisible() {
var deferred = protractor.promise.defer();
var self = this;
browser.wait(until.visibilityOf(self), 100000)
.then(
function success() {
deferred.fulfill(true);
},
function fail() {
deferred.reject(false);
});
return deferred.promise;
};
ElementFinder.prototype.waitForStalenessOfElement = function waitForElementNotVisible(){
var deferred = protractor.promise.defer();
var self = this;
browser.wait(until.stalenessOf(self), 10000)
.then(
function success() {
deferred.fulfill('Element no longer present in DOM');
},
function fail() {
deferred.reject('Element still present in DOM');
});
return deferred.promise;
};
ElementFinder.prototype.waitForElementToBeClickable = function(){
var deferred = protractor.promise.defer();
var self = this;
browser.wait(until.elementToBeClickable(self), 10000)
.then(
function success() {
deferred.fulfill('Element clickable');
},
function fail() {
deferred.fulfill('Element not clickable');
});
return deferred.promise;
};
ElementFinder.prototype.waitForTextToBePresent = function() {
var deferred = protractor.promise.defer();
var self = this;
browser.wait(until.textToBePresentInElement(self), 10000)
.then(
function success() {
deferred.fulfill('Element has text');
},
function fail() {
deferred.fulfill('text not found');
});
return deferred.promise;
};
ElementFinder.prototype.getItemText = function() {
var self = this;
return self.getText().then(function(text) {
return text;
});
};
ElementFinder.prototype.getNumber = function() {
var self = this;
return self.getText()
.then(function(text) {
return text;
})
.then(function(stringValue) {
return Number(stringValue.replace(/[^0-9\.]+/g, ''));
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment