2013-07-12 43 views
4

我想在網站上運行一些測試來查找問題。如何禁用phantomjs中的外部JavaScript執行/站點請求

爲了記錄在案,我使用phantomjs與硒的ghostdriver從C#

一切工作正常,但我想加快速度。檢查fiddler中的標題,很多時間花費在外部網站(facebook/twitter)的外部調用上,所有網站似乎都認爲這是一個好主意: - \

我不是必需的測試這些功能,所以我試圖禁用外部網站調用,這應該加快我的測試了一些什麼。

有沒有一種方法在幻像中獲得無腳本/ ghostery在Firefox中給出的效果?

+0

你有沒有訪問該網站的代碼來禁用圖像?如果是這樣,從另一個角度攻擊它 - 禁用您的測試環境中的這些插件。 – Arran

+0

不幸的是不是 – Martin

回答

2

要過濾無效請求,您可以使用onResourceRequested callback:這可以讓您中止不需要的URL。

這裏是一個基本的stackoverflow示例。

var system = require('system'); 
var page = require('webpage').create(); 
var domain = 'stackoverflow.com' 
var url = 'http://www.stackoverflow.com'; 

page.onResourceRequested = function (requestData, networkRequest) { 
    if (requestData.url.indexOf('.js')===-1 && requestData.url.indexOf(domain) === -1) { 
     networkRequest.abort(); 
     console.log('aborted :'+ requestData.url) 
    } 
}; 

page.onResourceReceived = function (response) { 
    console.log('Response (#' + response.url + ', stage "' + response.stage + '"): '); 
}; 

if (system.args.length !== 1) { 
    console.log("Usage: phantomjs filter.js url"); 
} else { 
    page.open(url, function (status) { 
     if (status = 'succeed') { 
      console.log("status", status); 
      phantom.exit(0); 
     } 
    }); 
} 

請注意,不建議中止js文件,因爲這會導致您的頁面上出現javascript錯誤。

的另一種方法,以加快您的測試是使用參數--load-images=false

+0

謝謝,我會檢查一下,看看我能不能找出如何在c#中執行它# – Martin

+0

這是一個運行腳本的c#示例:http://stackoverflow.com/a/26484685/289506 – ReinierDG