Reputation: 8501
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
returns www.foo.com
resource (the one in casper.start
), not the one with "bar".
How can I get the resource i've waited for with waitForResource
?
Upvotes: 1
Views: 4314
Reputation: 61952
You actually waited for the "bar"
resource. The problem is that resource
inside the then
callback function of waitForResource
is actually the page resource of the last start
or open
(thenOpen
) call. It may also be the current page resource for single page applications.
If you want to wait for the resource and do something based on it, you would have to jump through some hoops:
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);
});
If you don't need to do something for the current flow, you can always do the resource handling in the event handler:
casper.on("resource.received", function(resource){
if (resource.url.indexOf("bar") != -1) {
// do something
}
});
casper.start(url); // ...
Upvotes: 2