Неуспешно получаване на грешката: Елементът в момента не се вижда и затова може да не се взаимодейства с него

Докато се опитвате да щракнете върху елемента като:

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() - това връща ли се true? Въз основа на вашата грешка бих предположил, че isPresent() връща true, но isDisplayed() връща false. Ако случаят е такъв, опитайте да добавите имплицитна функция за изчакване, за да изчакате зареждането на елемента, преди да опитате да щракнете върху него.

person Gunderson    schedule 25.04.2016

Това се дължи на изскачащия прозорец, който се отваря преди щракване върху елемента. Обработи това чрез щракване върху URL адреса, така че изскачащият прозорец да се затвори и така транспортирът да може да взаимодейства с елемента.

person Deepak Sabastein    schedule 11.05.2016