2016-08-10 2 views
8

나는 console.logs를 사용하여 이것을 파악하려고 노력했지만 이러한로드 시간이 왜 그렇게 긴지 알 수 없습니다.Zombie.js pressButton 긴 콜백 지연

그래서 내 모카 단위 테스트 파일에 내 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#100마이너스 값 이후 값을 경우 테스트를 실행 한 후에 항상 약 5000-6000입니다. #200은 항상 전에 5-6 초 정도 인쇄됩니다.

페이지를로드 한 후 Zombie.js가 해당 콜백 함수를 호출하는 데 5-6 초가 더 걸리는 이유를 모르겠습니다.

Zombie.js에 페이지가로드 된 후 잠깐 기다렸거나 지연 될 수 있습니까? 페이지로드와 콜백 함수를 호출하는 Zombie.js 사이에이 5-6 초 지연을 야기 할 수있는 다른 요인은 무엇입니까?

EDIT 이제이 같은 문제가 있지만 50000ms와 같습니다. 그리고 그것은 정말로 나의 모든 테스트에 걸쳐 슈퍼를 빠르게 추가합니다. 나는 아직도 이것이 일어나고있는 이유를 알 수 없다. 내가 내 테스트에 browser.debug()를 추가하는 경우

편집 2

IT는 맨 끝에 다음을 인쇄합니다. 그것은 또한 다른 것들을 많이 인쇄하지만 전반적으로 꽤 빨리 일어난다. 나는 다음과 같은 것이 문제라고 생각한다. 왜 그 일을하는지, 어떻게 고칠 지 모르겠습니다.

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 (터미네이터, 콜백)

대기열의 모든 이벤트를 처리하고 완료되면 콜백을 호출합니다.

두 번째 양식을 사용하여 모든 이벤트를 처리하기 전에 제어를 전달할 수 있습니다. 종결자는 숫자 일 수 있으며이 경우 많은 이벤트가 처리됩니다. . 함수 일 수 있으며, 각 이벤트 이후에 호출됩니다. 함수가 값 false를 반환하면 처리가 중지됩니다.

+0

지연된 답변을 드려 죄송합니다. 지금까지 이것을 보지 못했습니다. 각 이벤트가 끝나면 정확히 어떻게 변경 사항을 감지합니까? 나는 console.log (browser.html());을 실행했다. 각 이벤트 간의 MS 차이가 일정량보다 큰 경우. 그러나 나는 그것들 사이에 어떤 변화도 발견 할 수 없다. 그러면 이벤트 사이에 너무 오래 걸리는 것이 무엇인지 어떻게 알 수 있습니까? 나는 현재 1 분이 넘는 시간이 걸리는이 단위 테스트를 가지고 있는데 그 이유를 알 수 없다. 과거에는 약 7 초 정도 걸렸습니다. 이제는 8 배 이상을 차지합니다. 그리고 코드를 변경하면 코드가 변경 될 수 있습니다. –