2015-10-30 5 views

Antwort

7

Also, sollte ich klicken(). Dann() in jedem Klick?

Definitiv nicht.

Es ist nicht erforderlich, da Protractor/WebDriverJS diesen Mechanismus "Control Flow", die im Grunde eine Schlange von Versprechen ist genannt hat, die gelöst werden müssen:

WebDriverJS eine Warteschlange anhängiger Versprechen hält, die so genannte Steuer Strömung, zu Halten Sie die Ausführung organisiert.

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

Sie müssen nicht mehr wartet hinzuzufügen und bietet Platz für Ihren Test. Der Winkelmesser kann automatisch den nächsten Schritt in Ihrem Test ausführen, sobald die Webseite ausstehende Aufgaben beendet, so dass Sie sich keine Gedanken über warten müssen, bis der Test und die Webseite synchronisiert sind.

, die zu einem ganz geradlinig Test Code führt:

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

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

Manchmal aber, wenn Sie die Synchronisierung/Timing-Probleme auftreten, oder die App im Test nicht-Angular ist, können Sie lösen sie durch die click() explizit mit then() Lösung und innerhalb des Klick Rückruf weiter:

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

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

+1

Die Zukunft von Control Flow ist in Frage. "In Zukunft wird der Kontrollfluss entfernt" [Der WebDriver-Kontrollfluss] (https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control -flow) –

1

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

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

+0

Die Zukunft von Control Flow steht in Frage. "In Zukunft wird der Kontrollfluss entfernt" [Der WebDriver Kontrollfluss] (https: // github.com/angular/winkelmesser/blob/master/docs/control-flow.md # deaktivieren-der-steuerung-fluss) –

Verwandte Themen