나는 내 웹 사이트에 대한 테스트를하여 탐색 막대와 루프에서 모든 링크를 가져 와서 모든 페이지를 열어 작은 테스트를 실행하여 CasperJS를 배우고 있습니다 (제목, 검색 버튼 누르기, 결과가 다시 나타나는지 확인하기 등). 또한 다음 링크로 이동하기 전에 페이지 제목 만 확인하는 "빠른 테스트"플래그가 포함되었습니다. 총 25 개의 링크가 있습니다.Casperjs는 링크를 통해 루핑 속도를 늦추고 있습니다.
문제는 약 10 개의 전체 테스트 후에 스크립트가 멈추지 만 빠른 테스트에서는 제대로 작동한다는 것입니다.
function testPage(ths){
checkTitle(ths, "Page Title");
if(quickTest)
return;
ths.click('#searchButton');
casper.waitForSelectorTextChange("#results",function(){
temp = ths.evaluate(function(){
return $("tr.row").length;
});
if(temp>0)
casper.echo("Results returned");
else
casper.echo("No results returned");
});
}
checkTitle()
기능 그냥 간단하다 :
casper.each(linkList, function(self, link){
self.thenOpen(link, function(){
self.echo(link);
temp = Date.now();
this.open(urlPrefix + link);
this.then(function(){
temp = (Date.now()) - temp;
self.echo("Load time: "+temp.toString()+"ms");
switch(link){
//case statements for specific pages
// - run specialized versions of testPage()
case "Example":
testExample(this);
break;
default:
testPage(this);
break;
}
});
});
});
testPage()
페이지 특정 기능 모두가 같은 모양이 내가 각 페이지를 열고 사용하고 루프입니다
function checkTitle(ths, name){
temp = ths.getTitle();
casper.echo("Page Title: "+temp+" - App loads: "+(temp==name ? "PASSED" : "FAILURE"));
}
quickTest
이 true
인 경우 루프가 완료되지만 아무런 문제가 없습니다. quickTest
이 false
이면 루프가 12 번째 페이지에서 무기한 중지됩니다. 우연히도, 11 번째 페이지는 문자 그대로 같은 페이지이며, 검색 필터를위한 더 많은 옵션이 있습니다. 또한, 내 casperjs 스크립트는 quickTest=false
으로로드하려면 페이지 13410ms을 걸리고 quickTest=true
으로는 460ms 만 남았고 2 개의 타임 스탬프 사이에 코드가 건너 뛰거나 추가되지 않고 IE에서 페이지를로드하지 않으므로 혼란 스럽습니다. 거의 오랫동안.
링크를 통해 루핑 한 후 캐스퍼가 느려지는 이유는 무엇입니까?
('임시 나는 다음을 추가하여 끝까지 모든 테스트를 얻기 위해 관리했습니다 ')를 세 가지 다른 방법으로 사용하고'testPage'에서'ths' 대신'casper'를 사용하면이 코드는 정상적으로 보입니다. 아마도 PhantomJS의 한계 일 것입니다. @ArtjomB. –
로컬 인스턴스 (예 :'ths ')와 반대되는'casper '를 사용하는 것과 다른 점이 있습니까? –
'casper'에 대한 전역 참조를 사용하는지 아니면 동일한 인스턴스에 대한 닫힌 참조를 사용하는지는 중요하지 않지만 개발자는 이상한 아이디어를 갖고 앞으로 행동을 변경할 수 있습니다. –