2016-05-09 8 views
3
私は私の自動テストのために分度器を使用してい

を引き起こし、私は次の動作に遭遇しました:使用browser.getは非同期スクリプトのタイムアウト

私は、ページがロードされているcertinページをロードするためにbrowser.getを使用しようとするけど次のエラーを取得する:

私は次のようにbrowser.getを使用
Error while running testForAngular: asynchronous script timeout: result was not received in 11 seconds. 

beforeEach(function() { 
    browser.ignoreSynchronization = false; 
    browser.get('https://.../Automation_VF'); 
    browser.ignoreSynchronization = true; 
},60000); 

it(data.testProperties.Description, function() { 

     browser.executeScript('return RemoteActions;') 
     .then(function(remoteAction) { 
       browser.executeAsyncScript(function(remoteAction) { 
       var callback = arguments[arguments.length - 1]; 
        Visualforce.remoting.Manager.invokeAction(remoteAction.clearAllData, function (res, ev) { 
         callback(res); 
        }, { buffer: false, escape: false, timeout: 15000 }); 
       },remoteAction).then(function(res) { 
        console.log("executing async script"); 
        console.log(res); 
       }); 
     }); 
}); 

私のconfファイルには、次のとおりです。

exports.config = { 
    framework: 'jasmine2', 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    specs: ['multiTestRun.js'], 
    getPageTimeout: 60000, 
    rootElement: '[ng-app]', 
    jasmineNodeOpts: { 
     showColors: true, 
     defaultTimeoutInterval: 10000000, 
     isVerbose: true, 
     includeStackTrace: true 
    }, 
    ... 
}; 

ページautomation_VFは非角形ページです。 browser.ignoreSynchronizationがtrueに設定された後にbrowser.getコマンドを使用しようとすると、ページは表示されません。

私の質問は、上記のエラーが発生するのはなぜですか(エラーはブロック内のすべてのコードがコメントアウトされても発生します)、browser.getコマンドをスクリプト実行コマンドで動作させるにはどうすればよいですか内部のブロック?

答えて

0

私の最初の提案は、ページオブジェクトを使用し、Automation_VFページを抽出してページ自体の取得を処理することです。あなたのオブジェクトは自分自身を取得する方法を知っているので、あなたの仕様は同期を無効/有効にする方法を知っています。 Thisがあなたを動かすのに役立つかもしれません。

+0

提案したようにページオブジェクトにgetアクションを移動しても、他の提案と同じエラーメッセージが表示されることはありますか? – user3475306

+0

簡単なページ取得テストを開始しようとしましたか?あなたはさまざまなことをしているように見えますが、それは既知の状態**から始めると役に立つかもしれません。たとえば、それぞれのプロパティの機能を前に切り取り、基本的な記述を行い、それを呼び出すだけでページを取得することができます。あなたがそこに着くことができることを確認してから**追加してください。時には壁に当たったときに私は追跡して自分自身をポジティブな状態にする必要があります。 – Sevfuria

0

私は、次のフォームにブロックを変換した後、問題を解決することができました:

it(data.testProperties.Description, function() { 
     browser.get('https://.../Automation_VF'); 
     browser.get('https://.../Automation_VF'); 

     browser.executeScript('return RemoteActions;') 
     .then(function(remoteAction) { 
       browser.executeAsyncScript(function(remoteAction) { 
       var callback = arguments[arguments.length - 1]; 
        Visualforce.remoting.Manager.invokeAction(remoteAction.clearAllData, function (res, ev) { 
         callback(res); 
        }, { buffer: false, escape: false, timeout: 15000 }); 
       },remoteAction).then(function(res) { 
        console.log("executing async script"); 
        console.log(res); 
       }); 
     }); 
}); 

は一つだけgetアクションがあったとき、要求されたページがロードされ、やって2つの取得行為がそれを固定していなかったようです。

関連する問題