J'ai été en mesure de faire défiler jusqu'à la fin de ma page Web afin de charger tout le contenu dynamique. Mais après cela, je voudrais évaluer la page afin d'obtenir des données. Mon problème est si je cours quelque chose de différent d'un simpleCasperJS évaluer ne pas exécuter après avoir fait défiler vers le bas
casper.echo("something");
Mon code casse et je ne reçois pas les données notées. Ceci est mon code:
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();
});
Vous pouvez voir une partie de mon code commenté que j'ai essayé beaucoup d'options différentes, sans succès. J'ai également essayé de placer l'évaluation ou le findAll dans le rappel _onTimeout. Je casse le code et "DONE" n'est jamais imprimé ou je ne peux jamais exécuter le code à l'intérieur d'évaluer ou n'importe quoi d'autre.
Le défilement fonctionne bien, et sans le défilement, je peux arriver à évaluer la page et obtenir le contenu voulu.
Alors, comment puis-je faire ce travail? Évaluez la page après le défilement?
Merci
EDIT: Je ai aussi testé le passage d'une fonction de rappel à scrollNow() pour poursuivre l'exécution après scrollNow() est appelée. Le rappel est appelé, mais encore une fois, pas de chance avec évaluer de findAll ou toute autre fonction pour obtenir les données voulues.
belle! Merci pour l'information – Alejandro