2016-10-11 7 views
1

Я хочу поймать assertEqualsError и обработать его. Например:Как обращаться с определенной assertEquals-Error для casperjs

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

Этот пример не работает. Создается код для кассового аппарата, и функция сбоя должна генерировать скриншот родительского элемента несоответствующего элемента.

Снимок экрана должен быть с увеличенным числом и должен (если возможно) выдать ошибку, включая строку теста.

+0

пример получен с помощью функции waitForSelector fail –

ответ

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