모든 동적 컨텐츠를로드하기 위해 웹 페이지 끝으로 스크롤 할 수있었습니다. 그러나이 작업을 수행 한 후에 일부 데이터를 얻으려면 페이지를 평가하고 싶습니다. 내 문제는 내가 단순한 것보다 다른 것을 실행하는 경우입니다.캐스퍼 JS 스크롤 다운 후 excecuting 평가 없음
casper.echo("something");
내 코드가 끊어지고 증서 데이터를받지 못합니다.
var casper = require('casper').create();
casper.start("http://mypageWithDynamicContentOnScroll.com");
var linksPrendas = [];
casper.waitForSelector('#idOfDivContainingDynamicContent',function(){
scrollNow();
});
var currentHeight;
var page = 1;
function scrollNow(){
casper.scrollToBottom();
casper.waitForSelector("#page"+page+"Height", function() {
casper.echo('scrolling...');
page++;
scrollNow();
},
function _onTimeout(){
});
}
var data = '';
casper.then(function(){
casper.echo('e');
//data = __utils__.findOne('div#someId').textContent;
casper.echo('f');
//var links = this.evaluate(function() {
// casper.echo("Evaluate ");
// var elements = __utils__.findAll('a');
// return elements. map (function (e) {
// return e.getAttribute('href');
// });
//});
});
casper.run(function(){
// var data = casper.evaluate(function() {
// var elements = __utils__.findAll('a.productListLink');
// return elements.map(function(e) {
// return e.getAttribute('href');
// });
// casper.echo("Evaluate ");
// return [1,2,3];
// });
casper.echo("Then");
casper.echo(elements);
casper.echo("DONE").exit();
});
당신은 내가 어떤 성공없이 많은 다른 옵션을 시도 나의 주석 코드의 일부에서 볼 수있다 : 이것은 내 코드입니다. _onTimeout 콜백 안에 evaluate 또는 findAll을 배치하려고했습니다. 나도 코드를 깨고 "DONE"은 결코 인쇄되지 않거나 평가 안의 코드를 실행하지 않습니다.
스크롤이 잘 작동하고 스크롤하지 않고도 페이지를 평가하고 원하는 콘텐츠를 얻을 수 있습니다.
어떻게하면됩니까? 스크롤이 완료된 후 페이지를 평가 하시겠습니까?
당신에게편집 감사합니다 나는 또한()가 호출 scrollNow 후 실행을() 계속 scrollNow에 콜백 함수를 통과 테스트 한 . 콜백이 호출되었지만 원하는 데이터를 얻기 위해 findAll 또는 다른 함수를 평가할 필요가 없습니다.
아름다운! 정보 주셔서 감사합니다 – Alejandro