2015-10-30 5 views

答えて

7

だから、すべてのクリックで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もありますが、ここでは関係ありません。

+1

将来のコントロールフローは問題になります。 "今後、コントロールフローが削除されています" [The WebDriver Control Flow](https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control -flow) –

1

はい、そうです。 おそらくそれは必要ではありませんが、おそらく次のバージョンではそうです。 したがって、clickが約束を返す場合は、それを使用する必要があります。

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

+0

Control Flowの将来については疑問があります。 "今後、制御フローが削除されています" [The WebDriver Control Flow](https:// github。com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control-flow) –

関連する問題