1

casper.on ("resource.requested")を使用すると、リソース リクエストをキャプチャし、評価のチェックを実行できます。

ページの読み込み時に、すべてのネットワーク リクエスト URL を配列にプッシュし、配列を走査して GOOGLE Analytics への呼び出し数を見つけます (つまり、_utm.gif)。

// google analytics calls testing
casper.test.begin('Test Container Tags', function suite(test) {

    casper.start("http://www.viget.com/", function() {

    });

    var urls = [],
        links = [];

    casper.on('resource.requested', function(requestData, resource) {
        urls.push(decodeURI(requestData.url));
    });

    casper.then(function() {
        var index = -1;
        var found = 0;
        for (var i = 0; i < urls.length; i++) 
        {
            index = urls[i].indexOf('__utm.gif');
            if (index > -1)
                found = found+1;
        }
        casper.echo('found' + found);
        test.assert(found > 0, 'Page Load Test Complete');
    });

    //Emit "resource.requested" to capture the network request on link click
    casper.then(function(self) {
        var utils = require('utils');
        var x = require('casper').selectXPath;
        casper.click(x("//a[data-type]"));
        casper.emit('resource.requested');
    });

    casper.run(function() { 
        test.done();
    });
});

しかし、次の質問は、ハイパーリンクのクリック イベントでのネットワーク リソース リクエストを確認することです。casper.emit("resource.requested")で動作させようとしましたが、成功しませんでした。

同じ問題の回避策を見つけるために、すでに丸一日を費やしました。この時点で、フィードバックをいただければ幸いです。

4

1 に答える 1

2

クリック後に casper.waitForResource() を使用して、そこで検証を行うことができます。

casper.test.begin('Test Container Tags', function suite(test) {

casper.start("http://www.viget.com/", function() {

});

var urls = [],
    links = [];

casper.on('resource.requested', function(requestData, resource) {
    urls.push(decodeURI(requestData.url));
});

casper.then(function() {
    var index = -1;
    var found = 0;
    for (var i = 0; i < urls.length; i++) 
    {
        index = urls[i].indexOf('__utm.gif');
        if (index > -1)
            found = found+1;
    }
    casper.echo('found' + found);
    test.assert(found > 0, 'Page Load Test Complete');
});

//Emit "resource.requested" to capture the network request on link click
casper.then(function(self) {
    var utils = require('utils');
    var x = require('casper').selectXPath;
    casper.click(x("//a[data-type]"));

});

casper.waitForResource(function testResource(resource) {
    console.log('----->' + resource.url);
});

casper.run(function() { 
    test.done();
});

});

于 2014-01-30T08:42:48.233 に答える