Zombie.js pressButton长callback延迟

我一直试图通过使用一堆console.logs来解决这个问题,仍然无法弄清楚为什么这些加载时间如此之长。

所以我在我的摩卡unit testing文件中的beforeEach中有下面的代码。

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

在这种情况下按下button将有一些redirect,然后最后显示仪表板页面。 在该HTML文件的底部,我有以下代码。

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

所以在运行testing后,如果我把#100之后的值减去 #200之后的值总是大约5000-6000。 因为#200总是在#100之前打印5-6秒。

我不明白为什么加载页面之后需要额外的5-6秒才能调用Zombie.js来调用callback函数。

Zombie.js在加载页面后是否有一些等待或延迟? 还有什么可能导致页面加载和Zombie.js调用该callback函数之间5-6秒的延迟?

编辑我现在有这个相同的问题,但像一个50000毫秒。 这真是在我所有的testing中快速加起来的。 我仍然无法弄清楚为什么会发生这种情况。

编辑2

如果我添加browser.debug()到我的testing它最后打印下面。 它还打印了很多其他的东西,但总的来说很快。 我认为以下可能是问题。 只是不知道为什么这样做或如何解决它。

 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 +?

编辑3

我还在unit testing的开始处添加了以下代码。

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

zombie Fired setInterval every 5000ms +5s打印每个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之后都是相同的zombie Fired setInterval every 5000ms 。 这11次之间完全没有变化。

我认为这个function在某些方面会有所帮助,但是我仍然不明白为什么会发生这种情况,或者如何解决这个问题。

       

网上收集的解决方案 "Zombie.js pressButton长callback延迟"

僵尸在触发callback之前加载所有资源并处理所有事件。 不要使用pressButton ,直接尝试提交表单,并使用等待和每个事件后将被调用的终结器callback。 这应该告诉你什么导致了延迟:

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

从API文档:

browser.wait(callback)

browser.wait(终结者,callback)

处理队列中的所有事件并在完成时调用callback。

在处理所有事件之前,您可以使用第二种forms来传递控件。 终止符可以是一个数字,在这种情况下处理许多事件。 它可以是一个函数 ,在每个事件之后被调用; 当函数返回值false时处理停止。