In protractor 2.0, I am checking in a expect()
if one element is displayed. I expect a false, but the weird thing is that I get following error:
NoSuchElementError: No element found using locator: By.id("userForm")
My code is:
describe('closeModal', function() {
it('should close the alert that appears after registration.', function(){
element(by.id('closeAlertModalButton')).click();
expect(element(by.id('userForm')).isDisplayed()).toBeFalsy();
});
});
I understand that I get that error because element is not longer on the page (is what I want to confirm), but shouldn't I get a false and not a error?
isDisplayed()
would check if an element is visible or not, but you need to check whether an element is present in DOM or not, use isElementPresent()
or isPresent()
:
expect(browser.isElementPresent(element(by.id('userForm')))).toBe(false);
expect(element(by.id('userForm')).isPresent()).toBe(false);
See also:
This error is part of WebDriver behavior. For such cases you should better use isPresent or isElementPresent
If element visible do A if not visible do B, disregard exception if element not found:
element.isDisplayed().then(function(visible){
if (visible) {
// do A when element visible
}else{
// do B when element not visible
}
}, function () {
//suppress exception if element is not found on page
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With