Last active
April 11, 2017 12:14
-
-
Save robert-fahey/a899d330be2d5f62d3c8c0926be1b6c3 to your computer and use it in GitHub Desktop.
ElementFinder extensions for Protractor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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