从casperjs中的内部重复循环转义



我在casper.repaint循环中有一个嵌套的casper.repaint。当一个元素出现时,我需要从内部退出并从第一个casper.start().repeat(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;
}

尝试:

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后藤是一种悲伤的平静,但我相信这可能是有用的。

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();
});

这有道理吗?

最新更新