2014-10-13 2 views
0

TextBox에 데이터를 설정하고 단추를 클릭 한 다음 페이지에서 데이터를 추출하는 기능이 CasperJS로 작성되었습니다.CasperJS가 데이터를 가져올 때까지 반복 재생

var casper = require('casper').create({ 
verbose: false, 
pageSettings: { 
    loadImages: false, 
    loadPlugins: false 
} 
}); 

casper.start("www.testsite.com", function(){ 
casper.thenEvaluate(function(){ 
    document.getElementsByClassName('inputfield')[0].value="set data";//google.com 
    document.querySelector('form[name="single_check_form"]').submit(); 
}).then(function(){ 
    var data = this.evaluate(function(){ 
     return document.getElementsByTagName('tr')[13].childNodes[3].innerHTML.replace("- ","").replace("<br>",""); 
    }); 
    casper.echo("Data found : "+data); 
}); 
}); 

위의 기능은 내가 '문자열'또는 '빈 문자열'얻을 클릭 후 웹 페이지에서 파일을 작업하지만 난 결과로 '널 (null)'얻을 일도있다.

그래서 데이터를 얻을 때까지 루프백하는 방법은 무엇입니까?

답변

0

CasperJS 단계를 중첩 할 수 있으므로 재귀를 사용해야합니다.

var data = null; 
function getData(){ 
    casper.thenOpen("www.testsite.com").thenEvaluate(function(){ 
     document.getElementsByClassName('inputfield')[0].value="set data";//google.com 
     document.querySelector('form[name="single_check_form"]').submit(); 
    }).then(function(){ 
     data = this.evaluate(function(){ 
      return document.getElementsByTagName('tr')[13].childNodes[3].innerHTML.replace("- ","").replace("<br>",""); 
     }); 
     if (data == null) { 
      getData(); 
     } 
    }); 
} 

casper.start().then(getData).then(function(){ 
    casper.echo("Data found : "+data); 
}).run(); 
+0

@ Artjom, TIP에 감사드립니다. – Rohith

관련 문제