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.
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) –