2012-07-17 118 views
1

幾周來我試圖自動執行瀏覽任務。 任務很簡單:登錄,點擊鏈接,輸入變量並提交,註銷。 我需要創建一個這樣的網站(排序一個更簡單的接口)請記住,該網站正在使用Servlets,我無法訪問網站代碼。 起初我試過CURL,但是因爲頁面中有一些Ajax元素捲曲無法顯示內容。 我嘗試過.NET Webdriver,JUnit,Selenium等,但都渲染ajax元素失敗。 我試過perl和python機械化,而perl沒有工作,我能夠獲得與python的動態內容。 問題不在於我的鏈接是Javascript執行,而是以Javascript開始:我不認爲我可以使用Mechanize調用函數。 有誰知道這個任務甚至可能嗎?如何自動執行瀏覽任務?

+0

您是否嘗試過使用selenium的'waitFor's來讓Ajax播放更好?它究竟如何'失敗'? – 2012-07-17 22:42:32

+0

Selenium登錄失敗。我使用硒的.NET包裝,並無法通過登錄屏幕。我收到了「您必須輸入密碼」錯誤。 (是的表單字段的名稱是正確的) – user1470618 2012-07-17 22:57:29

+0

[機械化常見問題](http://p3rl.org/WWW::Mechanize::FAQ#JavaScript)包含缺少JavaScript支持的解決方法,並列出許多模塊有Javascript支持。 – daxim 2012-07-18 07:41:51

回答

2

的Perl模塊,WWW::Mechanize是自動化網頁瀏覽的任務,如,下載,上傳,表單提交,驗證,簡單的瀏覽,屏幕抓取的最流行的方式等等,等等

如果網站包含的JavaScript,流行的Perl模塊來處理它們是使用WWW::Mechanize::Firefox

到目前爲止,「幾乎」任何類型的網站,包括像JavaScript和Ajax技術,並使用SSL安全性,或通過代理服務器訪問可以通過屬於LWP::UserAgentWWW::MechanizeWWW::Mechanize::Firefox的Perl模塊相結合的方法進行處理。通過網絡提供的示例負載。

+0

我理解它的方式WWW :: Mechanize :: Firefox需要MozlRepl這是一個Firefox擴展,並且與我的命令行環境無關。 – user1470618 2012-07-18 19:49:44

+0

你使用的是什麼樣的「命令行環境」?您也可以使用WWW :: Scripter來處理JavaScript。 – Annjawn 2012-07-18 19:56:06

+0

謝謝Annjawn,只是linux,事情是我想創建一個需要憑據的網站,並運行一個腳本來自動化一些任務,因此所有的任務都應該在腳本中完成,我也會看看Scripter。但我得出的結論是,儘管大家都說,處理複雜的網站與腳本是可能極其困難和模塊依賴。 – user1470618 2012-07-18 20:11:42

1

一個例子使用casperjs:

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: 'debug' 
}); 
casper.start(
    'http://example.com', 
    function() { 
     this.evaluate(function() { 
      return $('#someElementId div').length; // This runs as if it was on the page 
     }); 
     this.fill(
      '#formId', 
      { 
       email: '[email protected]', 
       password: 'password123' 
      }, 
      true 
     ); // This submits login form 
    } 
); 

Casperjs店餅乾,所以請求更深的網頁都不會失敗。有關提交表單的詳細信息,請參閱()。

請參閱evaluate()以運行js,就好像它在您正測試的頁面上執行一樣。

如果你想測試AJAX操作 - 沒問題。他們將運行,就好像該頁面在瀏覽器中運行一樣,您可以在DOM中看到結果。您可以使用evaluate()手動啓動它們。

+4

* OOOOO一堆隨機鏈接!* - 任何更多的信息將是有益的。 – rlemon 2012-07-17 22:37:49

+0

Selenium WebDriver在Ajax元素上失敗。 – user1470618 2012-07-17 22:38:23

+0

另外你確定我能用Phantom運行服務器端JavaScript嗎? – user1470618 2012-07-17 22:38:43