2015-01-30 2 views
0

내가 가지고 이후의 값을 가져 오기 위해 페이지의 옵션을 통해 루프 다음 ​​스크립트 : startQuery(id, val) 함수가 casper.start() 포함입니다루프는 실행 번

var casper = require('casper').create(); 
casper.on('remote.message', function (message) { 
    this.echo(message); 
}); 
casper.on('page.error', function (msg, trace) { 
    this.echo('Error: ' + msg, 'ERROR'); 
}); 
casper.start(url, function() { 
    this.evaluate(function() { 
     // nothing 
    }); 
    this.then(function() { 
     ddlArea_options = this.getElementsAttribute('#ddlArea option', 'value'); 
     for(var i = 0; i < ddlArea_options.length; i++) { 
      if(ddlArea_options[i] != '') { 
       this.echo(ddlArea_options[i]); 
       startQuery('myID', ddlArea_options[i]); 
      } 
     } 
    }); 
}); 

:

function startQuery(id, val) { 
    casper.start(url, function() { 
     this.echo('startQuery started'); 
     var obj = {}; 
     obj['#' + id] = val; 
     this.fillSelectors('#form1', obj, true); 
     this.evaluate(function() { 
      __doPostBack('ddlArea', ''); 
     }); 
     this.then(function() { 
      this.echo("doPostback complete"); 
      var values = this.getElementsAttribute('#anotherSelect option', 'value'); 
      for(var i = 0; i < values.length; i++) { 
       this.echo(values[i]); 
      } 
     }); 
    }); 
    casper.run(); 
} 

을하지만, startQuery()은 for 루프의 마지막 항목에서 한 번만 실행됩니다. 내가 놓친 게 무엇입니까?

답변

1

casper 인스턴스 당 start - run 쌍이 하나만있을 수 있습니다. start은 모든 단계를 재설정하기 때문에 대기열에있는 모든 항목이 사라집니다. startQuery에서 casper.startcasper.thenOpen으로 변경하고 casper.run을 완전히 삭제할 수 있습니다.