CasperJS waitForResource:如何获取我等待的资源

时间:2014-07-03 16:44:14

标签: wait casperjs

casper.test.begin('Test foo', 1, function suite(test) {
    casper.start("http://www.foo.com", function() {
        casper.waitForResource("bar", function(resource) {
            casper.echo(resource.url);
        });
    });

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

casper.echo返回www.foo.com资源(casper.start中的资源),而不是" bar"。

如何获得我waitForResource等待的资源?

1 个答案:

答案 0 :(得分:2)

您实际上在等待"bar"资源。问题是waitForResourceresource回调函数中的then实际上是上一个startopenthenOpen)的页面资源呼叫。它也可能是单页面应用程序的当前页面资源。

如果您想等待资源根据它做某事,您将不得不跳过一些箍:

var res;
casper.waitForResource(function check(resource){
    res = resource;
    return resource.url.indexOf("bar") != -1;
    // or as regular expression:
    //return /bar/.test(resource.url);
}, function(){
    this.echo("Resource found" + res.url);
});

如果您不需要为当前流做某事,您可以随时在事件处理程序中执行资源处理:

casper.on("resource.received", function(resource){
    if (resource.url.indexOf("bar") != -1) {
        // do something
    }
});
casper.start(url); // ...