我想在打开页面需要很长时间后中止运行casper。在PhantomJS中,您可以设置名为resourceTimeout的页面设置。此属性定义超时,在此超时之后,任何请求的资源将停止尝试并继续执行页面的其他部分。 在我查看CasperJS文档时,CasperJS不支持页面的这个属性。我知道我们可以使用stepTimeout选项来控制每个步骤所花费的时间,但我不想设置全局值来影响所有步骤。我想限制代码的页面打开步骤。 CasperJS中有没有相同的设置来做到这一点?或任何其他建议,以停止需要很长时间加载的页面?
谢谢,
答案 0 :(得分:1)
CasperJS构建于PhantomJS之上,因此您只需使用基础page
实例通过访问casper.page
来注册此事件。
在调用page
之前,不会创建casper.start()
实例,因此您需要在page.created
事件中创建页面后立即注册该事件:
casper.on("page.created", function(){
this.page.onResourceTimeout = function(request){
// do whatever you need to do
};
});
casper.start(url, then).run();
您不太可能需要它(多个不同的事件处理程序),但您也可以使用CasperJS'事件系统:
casper.on("page.created", function(){
casper.page.onResourceTimeout = function(request){
casper.emit("resource.timeout", request);
};
});
casper.on("resource.timeout", function(request){
// do whatever you need to do
});
casper.start(url, then).run();