CasperJS 中是否有任何 onResourceTimeout 等效项?

Is there any onResourceTimeout equivalent in CasperJS?

当打开一个页面需要很长时间时,我想中止 运行 casper。在 PhantomJS 中,您可以设置一个名为 resourceTimeout 的页面设置。此 属性 定义超时,在此之后任何请求的资源将停止尝试并继续页面的其他部分。 当我查看 CasperJS 文档时,CasperJS 不支持此 属性 页面。我知道我们可以使用 stepTimeout 选项来控制每个步骤所花费的时间,但我不想设置全局值来影响所有步骤。我只想限制代码的页面打开步骤。 CasperJS 中是否有任何等效设置可以做到这一点?或任何其他停止加载时间过长的页面的建议?

谢谢,

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();