角度アプリを実行していて、分度器でテストすると、then()
で約束をいつ解決すればよいか分かりません。分度器の場合、クリック()後に()を使用する必要があります
私は分度器APIでこれを見つけた:
クリックコマンドが完了したときに解決される約束を。
click
にclick().then()
を使用しますか?
角度アプリを実行していて、分度器でテストすると、then()
で約束をいつ解決すればよいか分かりません。分度器の場合、クリック()後に()を使用する必要があります
私は分度器APIでこれを見つけた:
クリックコマンドが完了したときに解決される約束を。
click
にclick().then()
を使用しますか?
だから、すべてのクリックでclick()、then()を使用する必要がありますか?
間違いなく。
分度器/ WebDriverJSは、このメカニズムは基本的に解決する必要がある約束のキューである"Control Flow"呼ばれていますので、それを必要としないです:
WebDriverJS保留約束のキューを保持し、に、 フロー制御と呼ばれます実行を組織化し続ける。
と分度器が自然とアウトオブボックスの角度を待ち:
あなたは、もはや待機を追加する必要がありませんし、あなたのテストに眠ります。引き出し は、 ウェブページが保留中のタスクを完了した瞬間にテストの次のステップを自動的に実行できるので、テストとウェブページが同期するのを待つことを心配する必要はありません。かなりストレートフォワードテストコードにつながる
:
時にはvar elementToBePresent = element(by.css(".anotherelementclass")).isPresent();
expect(elementToBePresent.isPresent()).toBe(false);
element(by.css("#mybutton")).click();
expect(elementToBePresent.isPresent()).toBe(true);
あなたは同期/タイミングの問題、またはが発生した場合、テスト対象のアプリケーションが非角度である、あなたがかもしれないがthen()
で明示的にclick()
を解決することによって、それを解決し、クリックコールバック内で継続:
expect(elementToBePresent.isPresent()).toBe(false);
element(by.css("#mybutton")).click().then(function() {
expect(elementToBePresent.isPresent()).toBe(true);
});
これらのケースでは、レスキューにはExplicit Waitsもありますが、ここでは関係ありません。
はい、そうです。 おそらくそれは必要ではありませんが、おそらく次のバージョンではそうです。 したがって、click
が約束を返す場合は、それを使用する必要があります。
http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.click
Control Flowの将来については疑問があります。 "今後、制御フローが削除されています" [The WebDriver Control Flow](https:// github。com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control-flow) –
将来のコントロールフローは問題になります。 "今後、コントロールフローが削除されています" [The WebDriver Control Flow](https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control -flow) –