繁体   English   中英

Zombie.js pressButton长回调延迟

[英]Zombie.js pressButton Long Callback Delay

我一直在尝试通过使用一堆console.logs来解决这个问题,但仍然不知道为什么这些加载时间这么长。

因此,我的Mocha单元测试文件中的beforeEach中包含以下代码。

browser.fill('email', 'test1@test.com');
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>

因此,在运行测试后,如果我将#100之后的值减去 #200之后的值,则总值约为5000-6000。 因为#200总是在#100之前打印#100 5-6秒。

我不明白为什么加载页面后Zombie.js大约需要5-6秒才能调用该回调函数。

Zombie.js加载页面后是否缺少等待或延迟? 还有什么原因导致页面加载和调用该回调函数的Zombie.js之间的5-6秒的延迟?

编辑我现在有同样的问题,但有一个50000ms。 在我所有的测试中,这真的超级快。 我仍然不知道为什么会这样。

编辑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所有的zombie Fired setInterval every 5000ms以及如何解决使其不占用55000ms +的问题?

编辑3

我还在单元测试的开始处添加了以下代码。

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

zombie Fired setInterval every 5000ms ,这11个zombie Fired setInterval every 5000ms一个之后, ab都相同。 在这11次之间它完全没有变化。

我以为该功能在某种程度上会有所帮助,但我仍然不明白为什么会发生这种情况或根本无法修复它。

Zombie会在触发回调之前加载所有资源并处理所有事件。 而不是使用pressButton ,尝试直接提交表单,并使用带有终止符回调的wait ,它将在每个事件之后调用。 这应该告诉您造成延迟的原因:

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

从API文档:

browser.wait(回调)

browser.wait(终止符,回调)

处理队列中的所有事件,并在完成后调用回调。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM