Issue
I'm trying to check if an element exists before I can execute this line:
driver.findElement(webdriver.By.id('test'));
This throws an error "no such element" if the id test
doesn't exist in the document, even in a try
-block.
I've found answers for Java, where you can check if the size is 0, but in node-js this throws an error before I can check the size.
throw error;
^
NoSuchElementError: no such element
Solution
You can leverage the optional error handler argument of then()
.
driver.findElement(webdriver.By.id('test')).then(function(webElement) {
console.log('Element exists');
}, function(err) {
if (err.state && err.state === 'no such element') {
console.log('Element not found');
} else {
webdriver.promise.rejected(err);
}
});
I couldn't find it explicitly stated in the documentation, but determined this from the function definition in webdriver/promise.js
in the selenium-webdriver
module source:
/**
* Registers a callback on this Deferred.
* @param {Function=} opt_callback The callback.
* @param {Function=} opt_errback The errback.
* @return {!webdriver.promise.Promise} A new promise representing the result
* of the callback.
* @see webdriver.promise.Promise#then
*/
function then(opt_callback, opt_errback) {
Answered By - Aaron Silverman
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.