Winkelmesser, wann soll ich dann () nach einem Klick () verwenden

8

Ich führe eine Angular-App aus und beim Testen auf dem Winkelmesser a click() weiß ich nicht, wann ich das Versprechen mit einem then() lösen soll.

Ich habe das auf der Protractor API gefunden:

  

Ein Versprechen, das gelöst wird, wenn der Klickbefehl abgeschlossen ist.

Also, sollte ich click().then() in jedem click verwenden?

    
Joao Falcao 30.10.2015, 17:08
quelle

2 Antworten

7
  

Soll ich also bei jedem Klick click (). then () verwenden?

Definitiv nicht.

Es wird nicht benötigt, weil der Winkelmesser / WebDriverJS diesen Mechanismus "Kontrollfluss" das ist im Grunde eine Warteschlange von Versprechen, die gelöst werden müssen:

  

WebDriverJS verwaltet eine Warteschlange mit ausstehenden Versprechungen, die als Steuerelement bezeichnet werden   fließen, um die Ausführung organisiert zu halten.

und Winkelmesser wartet natürlich und out-of-the-box auf Winkel:

  

Sie müssen Ihrem Test nicht mehr warten und schlafen. Winkelmesser   kann den nächsten Schritt in Ihrem Test automatisch ausführen   Die Webseite beendet ausstehende Aufgaben, sodass Sie sich keine Sorgen machen müssen   warten auf die Synchronisierung Ihres Tests und der Webseite.

Was zu einem ziemlich einfachen Testcode führt:

%Vor%

Wenn Sie jedoch Synchronisierungs- / Timing-Probleme haben oder Ihre getestete Anwendung nicht kantig ist, können Sie sie lösen, indem Sie click() explizit mit then() auflösen und innerhalb des Klickrückrufs fortfahren:

%Vor%

In diesen Fällen gibt es auch Explicit Waits , aber das ist hier nicht relevant.

    
alecxe 30.10.2015, 17:11
quelle
2

Ja, du solltest. Vielleicht gerade jetzt ist es nicht notwendig, aber vielleicht in den nächsten Versionen ist es. Also, wenn click ein Versprechen zurückgibt, sollten Sie es verwenden.

Ссылка

    
Broda Noel 15.02.2017 12:54
quelle