CasperJS在链接网站上查找404错误

时间:2013-10-21 16:14:13

标签: testing casperjs

我是初学程序员。我找到了很好的剧本 http://planzero.org/blog/2013/03/07/spidering_the_web_with_casperjs

我尝试用CasperJS测试框架重写这个脚本。 我想从这段代码获得xunit报告

var startUrl = 'http://yoursite.foo'; 

var visitedUrls = [], pendingUrls = [];

var casper = require('casper').create({ 
            pageSettings: {
                    loadImages:  false,        
                    loadPlugins: false         
            }});
var utils = require('utils')
var helpers = require('helpers')

// Spider from the given URL
casper.test.begin('href' , function(test) {
    casper.start(startUrl, function() {
        function spider(url) {

            // Add the URL to the visited stack
            visitedUrls.push(url);

            // Open the URL
            casper.open(url).then(function() {

                test.assertHttpStatus(200, ":" + url);
                // Find links present on this page
                var links = this.evaluate(function() {
                    var links = [];
                    Array.prototype.forEach.call(__utils__.findAll('a'), function(e) {
                        links.push(e.getAttribute('href'));
                    });
                    return links;
                });

                // Add newly found URLs to the stack
                var baseUrl = this.getGlobal('location').origin;
                Array.prototype.forEach.call(links, function(link) {
                    var newUrl = helpers.absoluteUri(baseUrl, link);
                        if (pendingUrls.indexOf(newUrl) == -1 && visitedUrls.indexOf(newUrl) == -1 && !(link.search(startUrl) == -1)) {
                            pendingUrls.push(newUrl);
                        }
                });

                // If there are URLs to be processed
                if (pendingUrls.length > 0) {
                    var nextUrl = pendingUrls.shift();
                    spider(nextUrl);
                }
                else {
                    console.log('links ended');
                    this.break;
                }

            });

        }
        spider(startUrl);
    }).run(function(){
        test.done();
    });
});

脚本正在运行但是当他和Job I无法获得报告时。

1 个答案:

答案 0 :(得分:0)

如果您正在尝试学习如何使用CasperJS,您需要从一个较小的例子开始。那个脚本是一个混乱,它位于一个名为yoursite.foo的网站之后(也许你把那个名字放在那里?)

我会采取一些小步骤。我有一个视频可能有助于解释如何使用CasperJS。

http://www.youtube.com/watch?v=Kefil5tCL9o