2015-10-30 15 views
8

Używam aplikacji kątowej i podczas testowania kątomierza click(), nie wiem, kiedy powinienem rozwiązać obietnicę z then().Kątomierz, kiedy należy go użyć() po kliknięciu()

Znalazłem to na Kątomierz API:

obietnicę, że zostanie rozwiązany, gdy polecenie kliknięciem została zakończona.

Czy powinienem używać click().then() w każdym click?

Odpowiedz

7

Czy powinienem użyć funkcji click(). Then() przy każdym kliknięciu?

Zdecydowanie nie.

To nie jest potrzebne, ponieważ kątomierz/WebDriverJS ma ten mechanizm zwany "Control Flow" który jest w zasadzie kolejki obietnic, które muszą być rozwiązane:

WebDriverJS utrzymuje kolejkę oczekujących obietnic, zwany przepływ sterowania , aby zorganizuj egzekucję.

i kątomierz czeka kątowa naturalnie i out-of-the-box:

Już nie trzeba dodawać czeka i śpi do testu. Kątomierz może automatycznie wykonać następny krok w teście w momencie, gdy strona internetowa kończy wykonywanie oczekujących zadań, więc nie musisz się martwić o to, że czeka na Twój test i strona internetowa do zsynchronizowania.

co prowadzi do dość prosta kodu Testowanie:

var elementToBePresent = element(by.css(".anotherelementclass")).isPresent(); 

expect(elementToBePresent.isPresent()).toBe(false); 
element(by.css("#mybutton")).click(); 
expect(elementToBePresent.isPresent()).toBe(true); 

Czasami jednak, jeśli wystąpią problemy z synchronizacja/czasowymi lub aplikacja badany jest non-kątowe, możesz rozwiązać go przez rozwiązania click() wyraźnie z then() i kontynuować wewnątrz click callback:

expect(elementToBePresent.isPresent()).toBe(false); 
element(by.css("#mybutton")).click().then(function() { 
    expect(elementToBePresent.isPresent()).toBe(true); 
}); 

W tych przypadkach jest również Explicit Waits, ale tutaj nie ma to znaczenia.

+1

Przyszłość przepływ sterowania jest w pytaniu. "W przyszłości proces kontroli jest usuwany" [Przepływ sterowania WebDriver] (https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control -flow) –

1

Tak, powinieneś. Może teraz nie jest to konieczne, ale może w następnych wersjach jest. Tak więc, jeśli click zwróci obietnicę, powinieneś jej użyć.

http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.click

+0

Przyszłość sterowania przepływem jest kwestią sporną. "W przyszłości strumień kontrolny jest usuwany" [Przepływ sterowania WebDriver] (https: // github.com/angle/protractor/blob/master/docs/control-flow.md # disabling-the-control-flow) –