2016-11-01 5 views
1

分度器の無視同期に問題があります。分度器は表示されていますが、要素を認識しません

browser.ignoreSynchronization = trueを使用せずにログインできませんでした。ログイン後、ignoreSynchronizationはもう必要ありませんでした。ここで

はログインコードです:次の場合は

browser.driver.get('xxx'); 

browser.ignoreSynchronization = true; 

$('#input-idCode').sendKeys(idCode); 
$('#input-phoneno').sendKeys(mobileNum); 
$('.mobile-id').click(); 

browser.wait(EC.presenceOf(nextButton), 15000); 
browser.ignoreSynchronization = false; 

、私はまた、角度のウェブサイトをテストしていますが、同じソリューションは、もはや動作しませんでした。 ログイン後、私はメインページにリダイレクトされ、エラーメッセージが表示されます。 失敗:60秒後に分度器がページと同期するのを待ってタイムアウトしました。私は対話したい要素が見えますが。

何が問題なのですか?私はignoreSynchronization = trueでテストを実行したくありません。

+0

を修正する必要があり、それが要素に関連していないを使用します。アプリがkeepaliveサービスで通常使用される$ httpや$ timeoutを継続的にポーリングするかどうかデベロッパーに問い合わせてください。参考までに[このドキュメント](https://github.com/angular/protractor/blob/master/docs/timeouts.md)を参照してください。 – Gunderson

答えて

0

Timed out waiting for Protractor to synchronize with the page after 50001ms

私が持っていた問題: あなたのページには、ポーリング$タイムアウトまたは繰り返し$ httpです。分度器は、Angularが "休息中"の状態(すべての要素とデータバインディングがロードされ、すべての要求が返されている)に達するまで何もしません。

$間隔の代わりに、$タイムアウトまたは$がHTTPあなたのエラーは、「分度器を同期するために待っている...にタイムアウトしました」されている場合は問題に

0

コードでは、get,sendKeysおよびclickは非同期に実行されますが、browser.ignoreSynchronizationは同期して割り当てられます。したがって、制御フローでdriver.getを実行すると、プロパティignoreSynchronizationはすでにfalseに設定されています。

制御フローに割り当てをプッシュし、この問題を克服するために:

browser.driver.get('xxx'); 

browser.controlFlow().execute(function() { 
    browser.ignoreSynchronization = true; 
}); 

$('#input-idCode').sendKeys(idCode); 
$('#input-phoneno').sendKeys(mobileNum); 
$('.mobile-id').click(); 

browser.wait(EC.presenceOf(nextButton), 15000); 

browser.controlFlow().execute(function() { 
    browser.ignoreSynchronization = false; 
}); 
+0

残念ながら、それは私のためには機能しませんでした。 分度器はもうログインしません。$( '#input-idCode')要素を待つだけです。 エラーメッセージ: 失敗:分度器が60秒後にページと同期するまでにタイムアウトしました。 https://github.com/angular/protractor/blob/master/docs/faq.mdを参照してください ロケータで要素を待機中 - ロケータ:By(css selector、#input-idCode) –

+0

'browser.driver.get(' xxx ');の前に同期します。 –

+0

'browser.ignoreSynchronization = true; browser.driver.get( 'xxx'); $( '#username')。sendKeys(username); $( '#password')。sendKeys(password); $( '.btn-primary')。クリック(); browser.ignoreSynchronization = false; browser.wait(EC.presenceOf($( 'left_action。'))、20000);分度器は、この上の要素が見つからない理由を私は理解していないにも私のために動作しません ' ... –

関連する問題