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
等待的资源?
答案 0 :(得分:2)
您实际上在等待"bar"
资源。问题是waitForResource
的resource
回调函数中的then
实际上是上一个start
或open
(thenOpen
)的页面资源呼叫。它也可能是单页面应用程序的当前页面资源。
如果您想等待资源和根据它做某事,您将不得不跳过一些箍:
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); // ...