2014-04-02 17 views
6

C'è un modo migliore per aspettare fino a quando viene caricata tutta pagina,AngularJS + goniometro attendere per tutte le chiamate Ajax per fine/di caricamento delle pagine pieno, prima di eseguire i test

mie pagine angolari sono caricati con promessa, vuol dire che se tutte le chiamate ajaxs non sono ancora terminate, c'è un caricatore sullo schermo.

Attualmente sto usando ptor.sleep (10000), come nel seguente esempio:

beforeEach(function(){ 
    ptor = protractor.getInstance(); 
    driver = ptor.driver; 
    ptor.get(base_url); 
    ptor.sleep(10000); 
}); 

c'è un modo migliore per farlo?

+0

trovato la risposta per questo la risposta per: http://stackoverflow.com/questions/28808463/what-is-browser-ignoresynchronization-in-protractor – user90766

risposta

6

Se si utilizza ng-if per nascondere/mostrare il contenuto quando si avvia/termina il caricamento, è possibile utilizzare la seguente sintassi per attendere fino a quando un determinato elemento non viene visualizzato nella pagina (ovvero ng-if impedirà che l'elemento si trovi nel DOM fino a quando la pagina di termine del caricamento):

ptor.findElement(by.id('element-only-shown-after-loading')).then(function (myElement) { 
    // Your page should be loaded at this point 
}); 
+0

grazie I Will check it out –

+0

Non capisco perché funzioni, se l'elemento non è nel DOM non dovrebbe trovare findElement' impossibile trovarlo? –

+1

ptor.findElement() attende fino a quando non trova quell'elemento per risolvere la sua promessa. Quindi puoi aspettare passivamente fino a quando quell'elemento appare sulla pagina e poi eseguire il tuo codice. –

Problemi correlati