2016-11-19 7 views
0

ログイン:CasperJSは、私がページにログインを試みるフォーム待ち成功

var casper = require('casper').create(); 
casper.start('http://sprashivai.ru/', function() { 
    this.click('#signin_link'); 

    this.capture('foo.jpg', undefined, { 
     format: 'jpg', 
     quality: 75 
    }); 

    this.fillSelectors('form', { 
     '#signin_username' : '[email protected]*****', 
     '#signin_pass' : '*****' 
    }, true); 

    casper.then(function() { 
     this.capture('foo_2.jpg', undefined, { 
      format: 'jpg', 
      quality: 75 
     }); 
    }); 

    casper.thenOpen(function() { 
     this.capture('foo_3.jpg', undefined, { 
      format: 'jpg', 
      quality: 75 
     }); 
    }); 

    casper.then(function() { 
     this.capture('foo_4.jpg', undefined, { 
      format: 'jpg', 
      quality: 75 
     }); 
    }); 

    this.waitForSelector("#top_nq_badge", 
     function pass() { 
      test.pass("Found #top_nq_badge"); 
     }, 
     function fail() { 
      test.fail("Did not load element #top_nq_badge"); 
     }, 
     20000 // timeout limit in milliseconds 
    ); 
}); 


casper.run(); 

は私がログインした後、私は要素#top_nq_badgeを見ることができますが、waitForSelectorはない私のために働くことを知っています。 ページにCasperJSを使ってどのようにログインできますか?

私はスクリプトを実行します: $ casperjs secr.js これは何も印刷せず、スクリプトの成功はエラーなしで機能しました。

foo_3.jpgとfoo_4.jpgファイルはスクリプトで作成されていません。 しかし、私のfoo.jpgというおよびfoo_2.jpgスクリーンショット:

foo.jpg

foo_2.jpg

答えて

1

それについてのエラーをキャッチするために何test変数は、ありませんが、あなたは.on('error'コールバックを使用する必要があり、セレクタのロード#top_nq_badgeは非常にゆっくりです。

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: 'debug', 
    waitTimeout: 5000, 
    userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4', 
    viewportSize:{width: 1600, height: 900} 
}) 
.on('error', function(msg) { 
    this.echo('Error: ' + msg, "ERROR"); 
}) 
.on('remote.message', function(msg) {this.echo('The error from evaluate: ' + msg, "ERROR");}) 
.start('http://sprashivai.ru/', function() { 
    this 
    .click('#signin_link'); 
    this.wait(0,function(){var i=0; 
    function snap(){i++;casper.capture('foo_'+i+'.jpg', undefined,{format: 'jpg',quality: 75});if(i<4){setTimeout(snap,1000)}}snap(); 
    }) 
    .fillSelectors('form', { 
     '#signin_username' : '<login_here>', 
     '#signin_pass' : '<pass_here>' 
    }, true) 
    .waitForSelector("#top_nq_badge", 
    function success() { 
     this 
      .echo('logged in!', 'INFO') 
      .capture('in.png') 
    }, 
    function fail(){ 
     this 
      .capture('failed.png') 
      .echo('failed to login', 'ERROR'); 
    }) 
}) 
.run() 
+0

[foo_0.jpg](https://drive.google.com/open?id=0B_tqnSHhFPBnREpOeVVjdFc4eWc)| [foo_1.jpg](https://drive.google.com/open?id=0B_tqnSHhFPBnSmI0a2NucEZRZUk)| [foo_2.jpg](https://drive.google.com/open?id=0B_tqnSHhFPBnOVBYSFE1MTBkLVE)| [foo_3.jpg](https://drive.google.com/open?id=0B_tqnSHhFPBnYURFMXlmMnlhMGc)| [foo_4.jpg](https://drive.google.com/open?id=0B_tqnSHhFPBnZGliRFFQc0Viams) –

+0

[ここでUserAgentを選んでください](https://github.com/dillbyrne/random-agent-spoofer/blob/master/ data/json/useragents.json) –

+1

はい、このセレクタの読み込みは非常にゆっくりです。 –

関連する問題