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

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

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>"

person Deepak Sabastein    schedule 25.04.2016    source источник
comment
Ошибка очень ясна, я думаю? Зачем нужно кликать по элементу? Если вы хотите что-то сделать с этим элементом, почему бы не сделать это прямо в вашей функции?   -  person Hoàng Long    schedule 25.04.2016


Ответы (2)


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

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

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

ИЛИ

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

person Gunderson    schedule 25.04.2016

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

person Deepak Sabastein    schedule 11.05.2016