javascript - 如何处理 casperjs 的特定 assertEquals-Error

标签 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 函数应生成不匹配元素的父元素的屏幕截图。

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

最佳答案

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")
});

关于javascript - 如何处理 casperjs 的特定 assertEquals-Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39974165/

相关文章:

javascript - AngularJS - 刷新页面后丢失html

javascript - 拔掉网线时抛出DOM异常

javascript - Giphy API - 在进行 AJAX 调用后无法弄清楚如何调用数据

javascript - 使用 HTML5 从 iPhone 录制语音

javascript - 使用 eval() 结果在 CasperJS 中填写表单

jenkins - CasperJs + jenkins : when a test fails, 如何检索有关此测试的所有信息

javascript - Node 的 spawn() 在从启动时计划的永久脚本中调用时静默失败

javascript - 需要 JavaScript 支持的页面上的 cURL 请求

javascript - 如何在casperjs中进行for循环

javascript - casperJS assertExists 不传递带有空格的类