2017-09-25 27 views
0

分度器のバージョンをロードするangular2を待っていません。この後、私はitでログインしています。
async関数が呼び出されていないため、最初の問題はです。失敗した研究をした後、私はbrowser.sleep(500)を追加して、上記のメッセージが表示されなくなり、ログインitが実行されました。分度器は

その後、私はランディングページ上のボタンをクリックし、別のページに移動し、別のbutton.Hereをクリックする必要がも、それは私がbrowser.waitForAngular()またはbrowser.sleep()を追加する場合ノー要素は、その後、ロケータ .But見つかりことを言って失敗しますそれは動作するようになります。私はこれを明示的に毎回追加することはできません。さらに、分度器(バージョン:1.3)を使って作業したとき、それは決して起こることはありませんでした。

私が思うに問題は、分度器が角度を同期させるのを待っていないことです。
解決方法はありますか?

分度器の設定ファイル

exports.config = { 
directConnect: true, 
useAllAngular2AppRoots: true, 
specs: ['./**/*.spec.js'], 
baseUrl: 'http://10.209.1.38:9090', 
framework: 'jasmine2', 
capabilites: { 
    'browserName': 'chrome' 
}, 
jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 60000 
}, 
onPrepare: function() { 
    browser.driver.manage().window().maximize(); 
    browser.get('/'); 
    browser.sleep(500); 
} 
}; 

答えて

0

conf.jsファイル内のコードやタグをexports.config下にしてみてください -

browser.ignoreSynchronization = true; 

とログインの内側に "それは" コードの下に使用します。 -

browser.waitForAngularEnabled(false); 

他のランディングページの内側には次のコードを使用してください。 -

browser.waitForAngularEnabled(true); 
+0

あなたは、すべての 'it'ケースに対して' browser.waitForAngularEnabled() 'を使用するべきですか? –

+0

いいえ、同期のたびに、角ページから非角ページに移動します。 –

+0

私のアプリケーション全体が角度 –

0

分度器は、試験を実行する前に、onPrepareが完全に終了するのを待つ必要はありません。

onPrepareの範囲でpromiseを返すこともできますが、引き続き実行する前にプロッターが待機します。

詳細はin this question hereまたはcorresponding Protractor documentation hereを参照してください。

私のケースでは、onPrepare-promisesが解決されるまでプロミスを作成し、それでprotractorテストの実行をトリガーするonPrepare-機能にLogin-Steps(ユーザ名とパスワードを入力し、ログインをクリック)を追加しました。

onPrepare: function() { 
    var login_page = require('../page/login_page.js'); 
    browser.driver.manage().window().maximize(); 
    browser.get('/'); 
    login_page.enterUserName('user'); 
    login_page.enterPassword('password'); 
    login_page.clickLogin(); 
} 
+0

私は仲間を助けませんでした....まだ分裂器がなぜ理解できませんか?画面がロードされるのを待ったり、リクエストをいくつか終了したりすることはありません。とにかくお返事ありがとうございます。 –

+0

簡単な言葉で言いますと:onPrepareの中に何も待っていなければ、プロトラクターは待たないでしょう。あなたが 'onPrepare'の中で約束を解決しないので、待つことは何もありません。 'ブラウザを追加してみてください。あなたの 'browser.get( '/');の下にwaitForAngular();'とそれがうまくいけば教えてください。 (基本的に分度器は、この行を追加することなくそれを行う必要がありますが、いくつかの難しい星座があるので、逃げる可能性があります)。 –

+0

[この比較的類似した質問をここでチェックしてください](https://stackoverflow.com/a/46734826/8683679)。 –