CasperJS:assertHttpStatus():301适用于slimer,而不是幻像

时间:2014-05-07 09:14:03

标签: javascript phantomjs casperjs http-status-codes slimerjs

如何检查是否存在使用casper(+幻像)的重定向?试试吧:

casper.test.begin('\n********* check 301 : ***********', function(test){
    casper.start('http://www.linternaute.com/ville/rennes2/ville-35238', function(response){
        this.test.assertHttpStatus(301);    
    })
    .run(function() {
            this.test.comment('--- Done ---\n');
            test.done();
    });
});

它适用于casper + slimer但不适用于casper +幻像。

curl -i http://www.linternaute.com/ville/rennes2/ville-35238

输出:HTTP/1.1 301 Moved Permanently

输出casper + slimer:PASS HTTP status code is: 301

输出casper +幻像:FAIL #current: 200, #expected: 301 - >问题

Differences slimer/phantom - > 当PhantomJS收到重定向作为HTTP响应时,它不会以启动状态调用onResponseReceive,slimerJS将其调用

1 个答案:

答案 0 :(得分:1)

好的,有关详细信息,请参阅Redirects not followed #442,如果您仍想测试301,请在此处找到解决方案:

casper.on('resource.received', function(resource) {
    if(resource.url === 'http://www.linternaute.com/ville/rennes2/ville-35238'){
        this.test.assertEquals(301, resource.status);
    };
});

但我最终选择以这种方式测试重定向(更简单):

casper.test.begin('\n********* check 301 : ***********', 1, function(test){
    casper.start('http://www.linternaute.com/ville/rennes2/ville-35238', function() {
        this.test.assertEquals(this.getCurrentUrl(), 'http://www.linternaute.com/ville/rennes/ville-35238');
    })
    .run(function() {
            this.test.comment('--- Done ---\n');
            test.done();
    });
});

我只是检查当前的URL对应于我的重定向...具有属性'openUrl'和'urlRedirected'的对象,它没关系-in a loop -...