2016-03-29 12 views
2

Während des Schreibens Test für Angular App mit Winkelmesser, ich konfrontiert eine Menge Probleme im Zusammenhang mit der Handhabung Spinner, einige von mir dann gelöst, aber ich weiß nicht, wie Spinner zu testen die durch Wrapper, beispielsweise ausgeblendet, wenn übergeordneter Tag hat ng-if oder ng-hide-Anweisungen und Spinner eine Höhe und Breite hat, die größer als 0 ist ich habe zu verwenden versucht:Wie Spinner mit Winkelmesser umgehen, wenn Spinner durch Wrapper versteckt

spinner.isDisplayed(); 
browser.wait(EC.visibilityOf(spinner), 5000); 

HTML Beispiele (das übergeordnete Etikett könnte anders sein):

<div class="some purent div"> 
<div class="spinner-loader small-loader ng-hide" ng-show="expression"> </div> 
</div> 

:::

<div class="container"> 
     <div class="spinner-loader spinner-dark" ng-if="if_statement"></div> 
</div> 

:::

<div ng-show='exp'> 
... 
<div> 
... 
    <div class='spinner'></div> 
</div> 
</div> 

aber es hat nicht funktioniert. Bitte helfen Sie ...!

+0

Können Sie den HTML-Code der zur Verfügung stellen Spinner, wenn es sichtbar und versteckt ist? –

+0

hinzugefügt, paar Beispiele, bitte beachten Sie, Eltern-Tag für Spinner könnte anders sein, und manchmal ng-wenn und ng-verstecken könnte auf Paar Tags höher – Den

Antwort

0

Versuchen Sie den folgenden Code.

element.all(by.model('model of your spinner')).each(function (eachElement, index) 
{ 
    eachElement.click(); 
    browser.driver.sleep(500); 
    element(by.css('Unique identifier of the Spinner value you are selecting')).click(); 
    browser.driver.sleep(500); 
}); 

Hoffe, das hilft. :)

+0

Warten auf eine bestimmte Zeit ist eine schlechte Praxis seit der Reaktionszeit für Webseite ist variabel. Was ist, wenn es etwas länger als die definierte Zeit dauert, um das Element anzuzeigen? –

0

Basierend auf den HTML-Fragmenten Ihrer zur Verfügung gestellt, können Sie die sichtbaren Spinner mit bekommen können:

By.cssLocator(".spinner-loader:not(.ng-hide):not([ng-if]) .spinner") 

und die versteckten Spinner zu bekommen:

By.cssLocator(".spinner-loader.ng-hide .spinner, .spinner-loader[ng-if] .spinner") 
+0

Was ist mit einem solchen Fall:

...
...
, und Elternelement dynamisch könnte Stil wie "display: none" erhalten, könnten Sie bitte etwas beraten? – Den

+0

Der Versuch, von Fall zu Fall eine Antwort zu erhalten, ist kein Ideal. Ich würde zuerst alle Fälle auflisten, dann die Regeln definieren und schließlich die Selektoren erstellen und bei Bedarf um Hilfe bitten. –