Получение сообщения об ошибке "Ошибка: элемент в данный момент не виден и поэтому не может взаимодействовать"
При попытке щелкнуть элемент как:
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()
возвращает ложь Если это так, попробуйте добавить неявную функцию ожидания, чтобы дождаться загрузки элемента, прежде чем пытаться щелкнуть по нему.