2014-04-02 12 views
6

Czy istnieje lepszy sposób, aby czekać, aż wszystko załadowaniu strony,angularjs + kątomierz czekać na wszystkich ajax połączeń do końca/pełnym obciążeniu stronę, przed uruchomieniem testów

moich kątowych stron są ładowane z obietnicą, oznacza to, że jeśli wszystkie wywołania ajaxów jeszcze się nie zakończyły, to na ekranie jest ładowacz.

obecnie używam ptor.sleep (10000), jak w poniższym przykładzie:

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

czy istnieje lepszy sposób to zrobić?

+0

znaleźć odpowiedź na to odpowiedź dla: http://stackoverflow.com/questions/28808463/what-is-browser-ignoresynchronization-in-protractor – user90766

Odpowiedz

6

Jeśli używasz do ukrywania/pokazywania zawartości podczas ładowania/kończenia, możesz użyć następującej składni, aby poczekać, aż na stronie pojawi się określony element (np. ng-if uniemożliwi elementowi znajdowanie się w DOM dopóki strona zakończeniu załadunku):

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

dzięki będę sprawdź to –

+0

Nie rozumiem, dlaczego to działa, jeśli element nie znajduje się w DOM nie powinno "findElement" być w stanie go znaleźć? –

+1

ptor.findElement() czeka, aż znajdzie element, aby rozwiązać obietnicę. Możesz więc biernie czekać, aż ten element pojawi się na stronie, a następnie uruchomić kod. –

Powiązane problemy