Транспортир, с isDisplayed() Я получаю NoSuchElementError: ни один элемент не найден с использованием локатора
В protractor 2.0 я проверяю expect()
, если отображается один элемент. Я ожидаю, что ложь, но странно, что я получаю следующую ошибку:
NoSuchElementError: элемент не найден с использованием локатора: By.id( "userForm" )
Мой код:
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();
});
});
Я понимаю, что получаю эту ошибку, потому что элемент больше не на странице (это то, что я хочу подтвердить), но не должен ли я получить ложь, а не ошибку?
Ответы
Ответ 1
isDisplayed()
будет проверять, является ли элемент видимым или нет, но вам нужно проверить, присутствует ли элемент в DOM или нет, используйте isElementPresent()
или isPresent()
:
expect(browser.isElementPresent(element(by.id('userForm')))).toBe(false);
expect(element(by.id('userForm')).isPresent()).toBe(false);
См. также:
Ответ 2
Эта ошибка является частью поведения WebDriver. Для таких случаев вам лучше использовать
isPresent или isElementPresent