【发布时间】:2016-12-17 11:34:46
【问题描述】:
我一直试图通过使用一堆 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 之前打印 5-6 秒。
我不明白为什么在加载页面后,Zombie.js 需要额外的 5-6 秒才能调用该回调函数。
加载页面后,Zombie.js 是否有一些等待或延迟?还有什么可能导致页面加载和 Zombie.js 调用该回调函数之间的 5-6 秒延迟?
编辑我现在也遇到了同样的问题,但时间大约为 50000 毫秒。在我所有的测试中,这真的很快就加起来了。我仍然无法弄清楚为什么会这样。
编辑 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+?
编辑 3
我还在单元测试的开头添加了以下代码。
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
a 和 b 在这 11 个 zombie Fired setInterval every 5000ms 中的每一个之后都是相同的。这 11 次之间根本没有变化。
我认为该功能会有所帮助,但我仍然不明白为什么会发生这种情况或如何解决它。
【问题讨论】:
标签: javascript node.js performance mocha.js zombie.js