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

时间:2013-07-12 14:37:09

标签: c# selenium-webdriver phantomjs noscript ghostdriver

我正在尝试在寻找问题的网站上运行一些测试。

为了记录,我在C#

的selenium中使用幻影驱动程序与幻影驱动程序

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

我不需要测试这些功能,因此我尝试禁用外部站点调用,这应该加快我的测试速度。

有没有办法在幻像中获得noscript / ghostery在firefox中给出的效果?

1 个答案:

答案 0 :(得分:2)

要过滤无效请求,您可以使用onResourceRequested callback:这允许您中止不需要的网址。

这是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

禁用图像