javascript - How to parse iframe on a website with CasperJS -


i want obtain informations on website iframe.

when parse website casperjs command :

casper.then(function() {     casper.waitfor(function() {         return this.withframe('mainframe', function() {});     }, function() {         this.withframe('mainframe', function() {             console.log(this.echo(this.gethtml()));         });     }); });  

my problem result, have content of 1 iframe only.

how can obtain result of iframe present on website?

casperjs doesn't provide function wait iframe load. however, can use waitforresource() step function wait iframe resource , act on it.

casper.waitforresource(function check(res){     var iframesrc = this.getelementattribute("iframe[name='mainframe']", "src");     return res.url.indexof(iframesrc) > -1; }, function(){     // success }); 

when resource received, can wait inside of iframe specific selector in order continue script iframe loaded:

casper.waitforresource(function check(res){     var iframesrc = this.getelementattribute("iframe[name='mainframe']", "src");     return res.url.indexof(iframesrc) > -1; }).withframe('mainframe', function(){     this.waitforselector("someselectorforanelement thatisloadedattheend", function(){         this.echo(this.gethtml());     }); }); 

casper.waitfor(function() {     return this.withframe('mainframe', function() {}); }, function() { 

this code doesn't wait @ all. casperjs supports fluent api, can chain multiple step functions this:

casper.start(url)     .then(function(){...})     .wait(3000)     .then(function(){...})     .run(); 

this means result of withframe() casper object evaluated true check function. there no waiting going on.


console.log(this.echo(this.gethtml())); 

doesn't make sense, because casper.echo() prints console. use either

console.log(this.gethtml()); 

or

this.echo(this.gethtml()); 

but not both.


Comments

Popular posts from this blog

c - Bitwise operation with (signed) enum value -

xslt - Unnest parent nodes by child node -

YouTubePlayerFragment cannot be cast to android.support.v4.app.Fragment -