[テストの角2 Webアプリケーション]失敗protractorjsと2角度:エラー分度器はページと同期するのを待っている間:「window.getAllAngularTestabilities関数ではありません」
trueに設定すると、このエラーは、browser.ignoreSynchronization = false
で発生このエラーは発生しません、なぜですか?
また、useAllAngular2AppRoots: true
が私の分度器の設定で設定されています。
[テストの角2 Webアプリケーション]失敗protractorjsと2角度:エラー分度器はページと同期するのを待っている間:「window.getAllAngularTestabilities関数ではありません」
trueに設定すると、このエラーは、browser.ignoreSynchronization = false
で発生このエラーは発生しません、なぜですか?
また、useAllAngular2AppRoots: true
が私の分度器の設定で設定されています。
分度器はWebDriverJSの上で動作します。 WebDriverJSが順番に自動化されたテストケース
WebDriverJSを使用して角度のアプリをテストで問題を記述するのに役立ちます、プログラムのあなたがコントロールするブラウザを聞かせてJavaのwebdriverを、にJavascriptのインターフェイスと同等である角度は、独自のイベントループは、ブラウザのとは別の持っているということです。つまり、WebDriverJSコマンドを実行すると、Angularがまだその処理を行っている可能性があります。
これは、WebDriverJSに任意の時間(つまり3000ms)待つように指示することで、Angularがレンダリングの作業を終了するようにしていますが、これは正しい方法ではありません。したがって、 Angularが前の処理を終了するまで、次のコマンドを実行することを延期することで、Angularのイベントループでのテストを行うことができます。
また、ここにキャッチがあります。これは非角度アプリケーションをテストするときに問題になりますが、角度を同期させるのを待って角度を待ってからサイクルを完了し、エラーがスローされます観察する!
したがって、Angular以外のページの場合、browser.ignoreSynchronization = true
を設定すると、ProjectionorにAngularを検索させないように指示することができます。これは実際にWebDriverJSを使用していることを意味します。
あなたのページで角度を見つけることができないときにこれをあなたの設定に追加すると、WebDriverJSの標準よりも簡単にAngularアプリケーションをテストできるようになります。そして、はい、すべてのコマンドがうまくいくはずですが、browser.sleepを追加するのは面倒ですが、Angularが設定した一時停止よりも時間がかかるとすぐに壊れて、テストが長くなりすぎます。
結論:角度を使用しないページをテストする場合は、browser.ignoreSynchronization = true
のみを使用してください。
参考:https://vincenttunru.com/Error-Error-while-waiting-for-Protractor-to-sync-with-the-page/
あなたは絶対にあなたのページが唯一のテストで1つの時間にロードされることを確認する必要があります。最初のロードが完了した直後にロードされたページを再ロードさせるログインモックアップでこの問題が発生しました Angular 2アプリケーションのブーストコード。これは、タイムアウトや上記のエラーでテストが失敗したり、うまく動作しなかったりして、あらゆる種類の予期しない動作を引き起こしました。
したがって、テストの前に一貫したページライフサイクルがあることを確認してください。
要約!ありがとう。 – alecxe