2013-07-21 76 views
1

這是我的代碼:爲什麼我的CasperJS腳本無法登錄到Quora?

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: 'debug' 
}); 



casper.start('http://www.quora.com', function() 
     { 
       this.click('input.submit_button'); 
       this.echo("page loaded"); 
       this.test.assertExists('form.inline_login_form', 'form is found'); 
      this.fill('form.inline_login_form',{email:'[email protected]',password:'xxxx'},false); 

     } 
); 

casper.then(function(){ 
     this.click('input.submit_button'); 

}); 

casper.then(function(){ 

     this.capture('google.png', { 
     top: 0, 
     left: 0, 
     width:0, 
     height:0 
    }); 
    this.echo("Page Title " + this.getTitle()); 
}); 

casper.run(); 

這是圖像的捕捉方法產生: enter image description here

爲什麼它不登錄? 該ID和密碼是正確的。

+0

嘗試捕捉移動到'then'與回聲。 – hexid

+0

我試過了,不起作用。 這是我使用的修改後的代碼: http://pastebin.com/gHKQt6vf 而且我仍然得到相同的捕獲。 @hexid –

回答

1

您應該在請求之間添加一些等待語句。可能有一些Ajax你沒有足夠的時間被解僱。你也會想要添加一個用戶代理。如果他們嗅探出您的用戶代理,有時會傳遞不同版本的網頁。

2

試試這個,必須努力:

var casper = require('casper').create({ 
viewportSize: { 
    width: 1080, 
    height: 768 
} 
}); 
var email = "[email protected]"; 
var pass = "********"; 



casper.start('http://www.quora.com', function() 
    { 
      this.click('input.submit_button'); 
      this.echo("page loaded"); 
      this.test.assertExists('form.inline_login_form', 'form is found'); 
     this.fill('form#__w2_b3oUn76_login_form',{email:'email',password:'pass'},true); 

    }); 

casper.waitForSelector("form[name=search_form] input[name='search_input']", 
function(){ 
    this.capture('google.png'); 
    this.echo("Page Title " + this.getTitle()); 
}); 

casper.run();