如何在phantomjs中禁用外部javascript执行/站点请求

本文关键字:执行 javascript 站点 请求 外部 phantomjs | 更新日期: 2023-09-27 18:22:17

我正试图在一个网站上运行一些测试以查找问题。

记录在案,我使用的是带有来自C#的selenium中的ghostdriver的phantomjs

一切都很好,但我想加快速度。在fiddler中检查标题,很多时间都花在了对外部网站(facebook/twitter)的外部调用上,这些网站似乎都认为社交插件是个好主意:-''

我不需要测试这些功能,所以我试图禁用外部站点调用,这应该会加快我的测试速度。

在phantom中有没有一种方法可以获得noscript/ghostery在firefox中给出的效果?

如何在phantomjs中禁用外部javascript执行/站点请求

要过滤无效请求,可以使用onResourceRequested回调:这允许您中止不需要的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 禁用图像