Если элемент отсутствует, я получаю сообщение об ошибке при добавлении условной функции

1

В настоящее время у меня есть страница, на которой есть элемент, который отображается случайным образом. Для этого я создал функцию условия:

this.checkDropdownPresent = function (dropdownLocator, chooseOption) {
    dropdownLocator.isPresent().then(function(element) {
        if (element) {
            let select = dropdownLocator;
            select.element(by.cssContainingText('option', chooseOption)).click();
        }
    });
}; 

Когда элемент отображается на экране, работающий тон и транспортир взаимодействуют с ним, но когда элемент IN NOT DISPLAYED на экране, я получаю сообщение:

Failed: element not visible: Element is not currently visible and may not be manipulated

Любой совет, чтобы помочь мне в этом?

  • 1
    Похоже, вам нужно проверить, видим ли элемент, а не только существует ли он.
  • 1
    Похожие страницы : stackoverflow.com/questions/36544589/…
Теги:
protractor

2 ответа

1

Вам нужно также проверить, отображается ли элемент. Ваш элемент присутствует (т.е. Часть DOM), но он скрыт. Обратите внимание, что вы можете не только проверить, отображается ли элемент без предварительной проверки, если он присутствует. isDisplayed() выдает ошибку, если элемент отсутствует.

this.checkDropdownPresent = function (dropdownLocator, chooseOption) {
    dropdownLocator.isPresent().then(function (present) {
        if (present) {
            dropdownLocator.isDisplayed().then(function (displayed) {
                if (displayed) {
                    let select = dropdownLocator;
                    select.element(by.cssContainingText('option', chooseOption)).click();
                }
            });
        }
    });
};
0

Всем спасибо за ответы.

Я решил, что моя проблема меняется isPresent() на isDisplayed(). Смотрите мой код сейчас:

this.checkDropdownPresent = function (dropdownLocator, chooseOption) {
    dropdownLocator.isDisplayed().then(function(element) {
        if (element) {
            let select = dropdownLocator;
            select.element(by.cssContainingText('option', chooseOption)).click();
        }
    });
};
  • 1
    Вы должны прочитать ответ Финспина снова, это немного лучше, учитывая, что вы хотите использовать условный клик. « isDisplayed() выдает ошибку, если элемент отсутствует.» ... поэтому, если вы хотите избежать возможной ошибки, лучше проверить оба в вашем сценарии. Я бы отметил его ответ как правильный.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню