2013-04-05 53 views
0

我想在整個域上自動進行一些技術測試。這些測試可以是加載速度,Yslow等級,Js錯誤,響應狀態代碼檢查...我成功創建了一個抓取給定域的所有URL的蜘蛛腳本,但是今天我在實現這些測試時遇到了一些問題。用PhantomJS運行復合測試

基本上,想象一下你想從一個未知的URL列表中獲取已知的度量列表。你將如何實現這一目標?

我從我的角度來看兩個選項:

  • 爲每個測試創建一個模塊,並在父腳本

    這可能是正確的調用它們每個網址,但一些腳本像yslow.js開放源代碼:不知道我將能夠轉換它們,並且它們將不會再運行(因爲模塊)

  • 重新調用phantomjs與新的子進程模塊(execFile或spawn )

    我會放鬆對執行的控制,肯定會有性能問題。

也許我的理解是不正確的。腳本是否限於唯一網址上的單個操作?我在網上看到的每個例子都是針對一個(或靜態列表)的url。

我知道PhantomJS不是測試框架,它只是用來通過合適的測試運行器啓動測試。也許我試圖用幻影來做很多事情,我應該儘量保持腳本儘可能簡單。

任何幫助將不勝感激

回答

0

首先 - 您可能想看看CasperJS。它運行在幻影之上,並使它更容易將事件鏈接在一起。

其次 - 您似乎可以將所有度量腳本設置爲按順序運行,然後將其包裝在for循環中,並將URL列表傳遞到該循環中。

urls = ['www.google.com', 'www.yahoo.com', 'www.bing.com']; 

for each(url in urls) { 
    phantom.load(url, function(page) { 
     runMetrics(page); 
    } 
} 

這是一個僞代碼-y,但會像那樣的工作嗎?

+0

感謝您的反饋,但這並沒有太大的幫助。 CasperJS是一款帶有單元測試功能的導航腳本庫。您的僞代碼是正確的,而且我的抓取工具中已經有相同的代碼。 – Cybermaxs 2013-04-09 07:19:44

+0

@Cyber​​maxs你的評論是否意味着你已經解決了你的問題?或者你的問題仍然沒有答案? (我打算建議像Ryan一樣)。 – 2013-04-11 09:37:53

+0

@DarrenCook一點都沒有,我還在調查.... – Cybermaxs 2013-04-11 12:27:18

相關問題