如何处理casperjs的特定assertEquals-Error

时间:2016-10-11 09:25:14

标签: javascript casperjs

我想捕获一个assertEqualsError并处理它。例如:

var innerHTML =  casper.getElementInfo(x('id("grid")/a[2]')).html;
test.assertEquals(innerHTML, "GridContent",
function success(){
},function fail(){
    captureSelector('screenshots/error%D%.png'.replace('%D%',25), x(id("grid")));
});

此示例不起作用。生成casper代码,fail函数应该生成不匹配元素的parent元素的屏幕截图。

屏幕截图必须带有递增的数字,并且应该(如果可能的话)抛出包括测试行的错误。

1 个答案:

答案 0 :(得分:0)

Tester#assertEquals没有成功或失败的回调,因为它不是异步的。获取该信息有点棘手,但您可以注册一个为您执行此操作的事件处理程序:

casper.on("fail", function(ev){
    if (ev.type === "assertEquals") {
        captureSelector('screenshots/error%D%.png'.replace('%D%',25), x(id("grid")));
    }
});

请记住,这是一个全局事件处理程序,如果不使用某些未记录的CasperJS功能,则无法删除。但如果你想让它更可重复使用,你可以这样做:

var failFunc = null;
casper.on("fail", function(ev){
    if (typeof failFunc === "function" && ev.type === "assertEquals") {
        failFunc();
        failFunc = null;
    }
});

...

casper.then(function(){
    failFunc = function(){
        captureSelector('screenshots/error%D%.png'.replace('%D%',25), x(id("grid")));
    };

    test.assertEquals(innerHTML, "GridContent")
});