我在 casper.repeat 循环中有一个嵌套的 casper.repeat 。我需要从内部逃脱并继续从第一个 casper.start()。重复(500 ... 当一个元素出现时...我刮了我传递页面的网站,并在其中一个页面中(我不确切知道哪一个元素可以出现,我需要打破这个循环并从起点继续。 这是我的代码:
casper.start().repeat(500, function() {
if(counter==11) {
page_counter++;
counter=0;
}
casper.open('http://my.ya.ru/clubs_rating.xml?p=' + page_counter);
var links = this.getElementsInfo('dl.info dt a');
this.echo('Opened page: ' + this.getCurrentUrl());
casper.repeat(40, function() {
//here i need make **waitFor** to check element every time////////
//and if it's here - break loop and go to start point/////////////
if(innercounter==19) {
ipagecounter=ipagecounter+20;
innercounter=0;
}
答案 0 :(得分:0)
尝试:
casper.waitForSelector('#your_selector_id', function() {
test.assertExists('#your_selector_id', "We've find this element\^_^/!");
}, function () {
this.echo('Wasn't found in 10 seconds!');
}, 10000);
或者看看https://github.com/yotsumoto/casperjs-goto Goto是一种悲伤的平安,但我相信可能会有用。
casper.start();
casper.repeat(500, function() {
casper.open('http://my.ya.ru/clubs_rating.xml?p=' + page_counter);
casper.label( "LABER_FOR_BREAK" );
var counter=0;
casper.label( "LOOP_START" );
casper.then(function(){
//check selector
if( /*true selector assertion*/ ){
this.goto( "LABEL_FOR_BREAK" );
};
});
casper.then(function() {
counter++;
this.echo( counter );
});
casper.then(function() {
if( counter<41 ){ this.goto( "LOOP_START" ); }
});
});
casper.run( function() {
this.dumpSteps( true );
this.exit();
});
这有意义吗?