CasperJs 捕获错误

CasperJs catch error

我不明白如何在 CasperJs 上捕获错误

我有这个代码

casper.thenClick('#activeCartViewForm > a');

有时 return 我 :

[error] [remote] mouseEvent(): Couldn't find any element matching '#activeCartViewForm > a' selector 

我想抓住它并 this.die(errorMsg) 停止我的 casperjs。

我尝试添加 waitForSelector :

casper.waitForSelector('#activeCartViewForm > a', function() {
    this.click('#activeCartViewForm > a');
});

但已经是同样的问题了。

当我这样做的时候:

casper.on('step.error', function(err) {
    this.die("Step has failed: " + err);
});

什么都没发生

当我这样做时:

casper.on('resource.error', function(err) {
    console.log(err);
    this.die("Step has failed: " + err.errorString);
});

它为我提供了一个从未见过的错误并停止了我的 phantomjs :

[error] [phantom] Error: the remote server closed the connection prematurely 

[error] [phantom] Error: The request has been aborted 

[error] [phantom] Error: The request has been aborted 

[error] [phantom] Error: the remote server closed the connection prematurely 

谢谢

您可以使用以下语句在 CasperJS 中捕获错误:

casper.on('error', function(msg, trace) {
    // process an error
});

您可以试试这个工作示例:

var casper = require('casper').create();

casper.on('error', function(msg) {
    this.capture('error.png');
    this.die(msg);
});

casper.start('http://casperjs.org/', function() {
});

casper.thenClick('#activeCartViewForm > a');

casper.run();