javascript loops phantomjs casperjs

javascript - CasperJS/PhantomJS.entonces en do/while Loop no funciona



loops (1)

Hay diferentes posibilidades, si solo quieres repetir cosas estáticas, puedes usar casper.repeat () -> cómo tener un valor variable para casper.repeat

Si quieres hacer un tiempo con multipe y luego dentro y un punto de quiebre, igual tienes que usar una función recursiva por lo que sé. Aquí hay un ejemplo:

... casper.then(function() { loopValidConf.call(this, 0, 15); }); casper.then(function() { casper.test.assert(exists, ''true after 15 tries!'') }); function loopValidConf(index, numTimes) { if (exists === true || index >= numTimes) { return; } casper.then(function() { casper.reload(function() { casper.echo("reset values"); }); casper.then(function() { // set some values here }); casper.then(function() { casper.waitForSelector(".selector") }); casper.then(function() { if (casper.exists(''.targetSelector'')) { exists = true; casper.echo(''targetSelector exists!''); } else { casper.echo(''targetSelector doesnt exists, try it once more!''); } }); }); casper.then(function() { loopValidConf.call(this, index + 1, numTimes); }); } ...

Esto todavía no es el óptimo (podría causar problemas de memoria), pero funciona. :)

Algo como esto me pareció bastante lógico pero causó que el fantasma se volcara (eso es lo que se llama en el registro, pero no da información útil) ...

do { casper.then(function() { var targetFound = false; links = this.evaluate(getLinks); var searchResultsAr = []; for (var link in links) { searchResultsAr.push(links[link].replace(''/url?q='', '''').split(''&sa=U'')[0]); } for (var result in searchResultsAr) { if (searchResultsAr[result] == target) { targetFound = true; casper.echo(targetFound); break; } } if(targetFound) { break; } }); }while(!targetFound);