Получение сообщения об ошибке "Ошибка: элемент в данный момент не виден и поэтому не может взаимодействовать"

При попытке щелкнуть элемент как:

element.all(by.repeater("condition in filterCtrl.conditions")).get(1).click();

Я получаю ошибку как:

Failed: Element is not currently visible and so may not be interacted with". 

Как я могу это преодолеть.

Мой CSS как ниже

<div class="_md-select-menu-container _md-active _md-clickable" aria-hidden="false" id="select_container_198" style="display: block; left: 764px; top: 181px; min-width: 234.547px;"><md-select-menu class="ng-scope _md-overflow" style="transform-origin: 101.273px 72px 0px;"><md-content>
<!-- ngRepeat: condition in filterCtrl.conditions --><md-option ng-repeat="condition in filterCtrl.conditions" value="CONTAINS" tabindex="0" class="ng-scope md-ink-ripple" aria-selected="false" role="option" id="select_option_257"><div class="_md-text ng-binding">Contains</div></md-option><!-- end ngRepeat: condition in filterCtrl.conditions -->option ng-repeat="condition in filterCtrl.conditions" value="ENDS_WITH" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_261"><div class="_md-text ng-binding">Ends with</div></md-option><!-- end ngRepeat: condition in filterCtrl.conditions -->
</md-content></md-select-menu></div>"

2 ответа

Решение

Это связано с тем, что всплывающее окно открывается перед щелчком по элементу. Для этого нужно щелкнуть URL-адрес, чтобы всплывающее окно закрылось и транспортир мог взаимодействовать с элементом.

Ну, ошибка говорит вам, что элемент в настоящее время не виден, поэтому он не может выполнить щелчок. Не знаю, как настроено ваше приложение, угловое или нет, но я бы посоветовал попробовать 2 вещи:

1) Если этот элемент определенно загружен, попробуйте прокрутить его в поле зрения.

var scrollIntoView = function () {
    arguments[0].scrollIntoView();
}
browser.executeScript(scrollIntoView, yourwebelement);

ИЛИ ЖЕ

2) Убедитесь, что элемент действительно присутствует и отображается на странице. Если вы измените свой код на expect заявление и добавить.isPresent() или же .isDisplayed() - Это возвращает истину? На основании вашей ошибки я бы догадался isPresent() возвращает истину, но isDisplayed() возвращает ложь Если это так, попробуйте добавить неявную функцию ожидания, чтобы дождаться загрузки элемента, прежде чем пытаться щелкнуть по нему.

Другие вопросы по тегам