2016-08-10 12 views
8

私はconsole.logsの束を使用してこれを理解しようとしてきましたが、これらの読み込み時間が長い理由をまだ理解できません。Zombie.js pressButton長いコールバック遅延

私は自分のMochaユニットテストファイルのbeforeEachに以下のコードを書いています。そして、最終的にはダッシュボードページを表示するいくつかのリダイレクトを持つことになります。この場合、ボタンを押すと

browser.fill('email', '[email protected]'); 
browser.fill('password', 'testtest'); 
browser.pressButton('Login').then(function() { 
    console.log("#100 - "+ new Date().getTime()); 
    done(); 
}); 

。そのhtmlファイルの一番下に、次のコードがあります。

<script> 
    $(document).ready(function() { 
     console.log("#200 - "+ new Date().getTime()); 
    }); 
</script> 

は、だから私は#200マイナス値の後に値を取る場合のテストを実行した後、それは常におよそ5000から6000です。 #200は、よりも5〜6秒ほど前に常に印刷されるためです。

私は、ページを読み込んだ後、Zombie.jsがそのコールバック関数を呼び出すためにさらに5-6秒かかります。

Zombie.jsには、ページを読み込んだ後に紛失してしまいます。ページの読み込みとそのコールバック関数を呼び出すZombie.jsの間にこの5〜6秒の遅延が発生する原因は他にありますか?

EDIT私は今この同じ問題を抱えていますが、50000msと同じです。そして、それは本当にすべての私のテストですばやくスーパーを追加します。なぜこれが起こっているのかまだ分かりません。

EDIT 2

私は私のテストにbrowser.debug()を追加した場合、それは非常に最後に次のように出力します。それはまた、他の多くのものを印刷しますが、それはかなり早く全体的に起こります。私は次のことが問題だと思う。それがなぜそれをやっているのか、それをどう修正するのかは分かりません。

zombie Fired setInterval every 5000ms +11ms 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 
zombie Fired setInterval every 5000ms +5s 

zombie Fired setInterval every 5000msのすべてを引き起こしていると私はそれはそれは55000ms +を服用しないようにする方法を修正しますか?

EDIT 3

Iはまた、ユニットテストの開始時に次のコードを追加しました。

browser.addListener("setInterval",function (a,b) { 
    console.log("a: "+a); 
    console.log("b: "+b); 
}); 

zombie Fired setInterval every 5000ms +5sを印刷した後、そのリスナーのために次のものも印刷されます。

a: function(){var b,c,d;if(b=window.location.href,b!==h){try{d=JSON.stringify({action:"ping",sid:a.utils.getSessionID(),muid:a.utils.getMerchantID(),referrer:h,url:b,title:document.title}),e.contentWindow.postMessage(d,"*")}catch(f){c=f}return h=b}} 
b: 5000 

abは、これら11 zombie Fired setInterval every 5000msの各々の後に同じです。それは11回の間にまったく変わらない。

私は関数が多少助けてくれると思っていましたが、なぜこれが起こっているのか、それをどう修正するのかはまだ分かりません。

答えて

1

ゾンビはすべてのリソースをロードし、すべてのイベントを処理してからコールバックをトリガーします。pressButtonを使用する代わりに、直接フォームを送信し、を使用してください。を各イベントの後に呼び出されるターミネータコールバックで待機してください。 APIドキュメントから

browser.document.forms[0].submit(); 
browser.wait(function(){ 
    //called after each event 
}, function() { 
    //all events processed 
}); 

:これは遅延を引き起こしているものをお見せなければならない

browser.wait(コールバック)

browser.wait(ターミネータ、コールバック)

キュー内のすべてのイベントを処理し、完了したらコールバックを呼び出します。

の2番目のフォームを使用して、すべての イベントを処理する前に制御を渡すことができます。ターミネータには数字を使用できます。この場合、多くのイベント が処理されます。それぞれのイベントの後に呼び出されるファンクションにすることができます。 関数が値falseを返すと処理が停止します。

+0

遅れて返信して申し訳ありません。これまで見ていなかった。各イベントの後にどのくらい正確に変更を検出しますか?私は 'console.log(browser.html());'を実行しました。各イベントのMSの違いが一定量を超えているとします。しかし、私はそれらの間で変更を見つけることはできません。だから、イベントの間に何がそんなに長くかかるのか、どうすればわかるだろうか?私は現在、この単体テストを持っています。これは1分以上かけて行われます。理由を理解できません。過去には約7秒かかった。今それは8倍以上を占めています。そして私はそれを引き起こす私のコードの変更を見つけることができません。 –

関連する問題