2014-01-25 109 views
1

我使用此代碼使用casperJS登錄LinkedIn,但它不工作,登錄後的標題應該是「Welcome!LinkedIn」,但它的返回「世界上最大的專業網絡| LinkedIn」和文件。位置應該與網站網址不同,但是它在執行後會返回網站網址。CasperJS登錄LinkedIn

var casper = require('casper').create({ 
verbose: true, 
logLevel: 'debug', 
pageSettings: { 
    loadImages: false,   // The WebPage instance used by Casper will 
    loadPlugins: false,   // use these settings 
    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' 
} 
}); 

// print out all the messages in the headless browser context 
casper.on('remote.message', function(msg) { 
    this.echo('remote message caught: ' + msg); 
}); 

// print out all the messages in the headless browser context 
casper.on("page.error", function(msg, trace) { 
    this.echo("Page Error: " + msg, "ERROR"); 
}); 

var url = 'https://www.linkedin.com/'; 

casper.start(url, function() { 
    // search for 'casperjs' from google form 
    console.log("page loaded"); 
    this.test.assertExists('form#login', 'form is found'); 
    this.fill('form#login', { 
     session_key: '[email protected]', 
     session_password: 'password' 
    }, true); 
}); 

casper.thenEvaluate(function(){ 
    console.log("Page Title " + document.title); 
    console.log("Your name is " + document.location); 
}); 

casper.run(); 

我在做什麼錯在這段代碼?

回答

2

我認爲腳本太快評估代碼。

,所以我會用這個句子替換casper.thenEvaluate(如果您正在使用1.1卡斯帕運行腳本):

casper.waitForUrl(/nhome/, function() { 
     this.evaluate(function() { 
      console.log("Page Title " + document.title); 
      console.log("Your name is " + document.location); 
     }); 
}); 

此外,您還可以等待嘗試

casper.wait(2000, function() { 
     this.evaluate(function() { 
      console.log("Page Title " + document.title); 
      console.log("Your name is " + document.location); 
     }); 
}); 

更多關於此功能的信息: http://docs.casperjs.org/en/latest/modules/casper.html#waitforurl

+0

你測試了你發佈的代碼嗎?我得到這個錯誤'[error] [phantom]等待超時5000ms過期,退出。 超過5000ms的等待超時退出。 ' – scottydelta

+0

是的,它的工作原理,但我是法國人,所以也許LinkedIn不會爲我提供相同的頁面URL。嘗試等待(2000,function(){}); –

+0

有沒有新聞?謝謝。 –

0

在我的情況下,我剛剛存檔了這個,當我做了這樣的事情:

this.evaluate(function() { 
    $('#login-email').val('[email protected]'); 
    $('#login-email').focus(); 
}); 

this.page.sendEvent('keypress', this.page.event.key.M, null, null, 0x02000000); 
this.capture('p1.1.png'); 

this.evaluate(function() { 
    $('#login-password').val('PASSWORD'); 
    $('#login-password').focus(); 
}); 

//change to the last character of your password. 
this.page.sendEvent('keypress', this.page.event.key[3]); 

this.page.sendEvent('keypress', this.page.event.key.Enter); 
this.page.sendEvent('keypress', this.page.event.key.Enter); 

我相信他們不啓用提交,直到您不輸入文本框中的內容。