2017-08-09 17 views
4

分度器のタイミングに問題があります。私の分度器のテストケースがネットワークやパフォーマンスの問題で失敗することがあります。私はbrowser.sleep()で既存の問題を解決しました。後で私はbrowser.wait()について知りました。browser.sleep()メソッドとbrowser.wait()メソッドの違いは何ですか?

ネットワークとパフォーマンスの問題を解決するにはどちらが優れているのですか。

答えて

5

それはタイミングの問題を扱うに来るとき、「速い」browser.sleep()を入れて、上を移動するために魅力的かつ簡単です。

問題は、いつかは失敗するということです。設定するスリープタイムアウトには、ネットワークやパフォーマンスなどの理由で、ある時点でページが読み込まれる時間や要素が表示されるまでに時間がかかるなど、ゴールデン/ジェネリックルールはありません。時間、あなたは実際には必要以上に待って終わるだろう。これに対して、

browser.wait()は、動作が異なります。分度器/ WebDriverJSのためにExpected Condition functionを実行して、関数の結果が真と評価されるのを待ちます。分度器は機能を継続的に実行し、機能の結果が真であるか、設定可能なタイムアウトに達した時点で停止する。

組み込みの予想条件は複数存在しますが、カスタム条件を作成して使用することもできます(サンプルhere)。

2

browser.sleep()

スケジュール時間の所定量のドライバ睡眠を行うコマンド。

browser.wait()

スケジュール保有または解決されることを約束する条件を待つためのコマンド。

この機能は、WebDriverの制御フローをブロックし、JavaScriptランタイムをブロックしません。それは、将来のウェブドライバコマンドが実行されるのを遅らせるのみであり(例えば、セルラサーバに将来のコマンドを送る前にプロトラクタが待機する)、ウェブドライバ制御フローがイネーブルされているときだけである。

ドキュメントのリンクhttp://www.protractortest.org/#/api

関連する問題