2016-04-25 12 views
1

Bei dem Versuch, die auf das Element als:Erste der Fehler „Fehler: Element ist nicht sichtbar ist und so nicht mit interagiert werden kann“

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

Ich erhalte den Fehler:

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

Wie kann ich das überwinden?

Meine CSS ist als unten

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

Der Fehler ist sehr klar, denke ich? Warum müssen Sie auf das Element "klicken"? Wenn Sie etwas mit diesem Element machen wollen, warum nicht direkt in Ihrer Funktion? –

Antwort

0

Dies liegt daran, dass das Pop-up vor dem Klicken auf das Element geöffnet wurde. Behandelt dies durch Klicken auf die URL, so dass das Popup-Fenster geschlossen wird und der Winkelmesser mit dem Element interagieren kann.

1

Nun, der Fehler ist Ihnen zu sagen, dass das Element ist nicht sichtbar, so dass ist, warum es den Klick nicht durchführen können. Nicht sicher, wie Ihre App eingerichtet ist, ob es Angular ist oder nicht usw. Aber ich würde vorschlagen, 2 Dinge zu versuchen:

1) Wenn dieses Element definitiv geladen ist, versuchen Sie es in Sicht zu scrollen.

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

ODER

2) Stellen Sie sicher, dass das Element tatsächlich vorhanden ist und auf der Seite angezeigt. Wenn Sie Ihren Code in eine expect-Anweisung ändern und .isPresent() oder .isDisplayed() hinzufügen - Ist das wahr? Basierend auf Ihrem Fehler würde ich raten isPresent() gibt wahr zurück, aber isDisplayed() gibt false zurück. Wenn dies der Fall ist, versuchen Sie, eine implizite Wartefunktion hinzuzufügen, um auf das Laden des Elements zu warten, bevor Sie versuchen, darauf zu klicken.

Verwandte Themen