2015-11-11 2 views
0

Я пишу сценарий в Nightwatch, который проверяет определенный элемент на странице. Возможно, скрипт может тестировать URL-адрес, в котором этот элемент отсутствует на странице, и в этом случае я хочу, чтобы сценарий завершил проверку без каких-либо сбоев.Nightwatch Abort Test on Pass

Я не могу найти способ отменить тест раньше, не вызывая отказ. Есть ли способ отключить тест Nightwatch на проходе?

Вот часть кода я работаю для справки:

//End test if pagination is not present 
'Pagination Present' : function (browser) { 
    browser 
    .execute(function() { 
    return document.querySelectorAll("ul[class='pagination']").length; 
    }, 
    function(count){ 
    if (count.value == 0) { 
     browser.assert.equal(count.value, 0, "There is no pagination on this page."); 
     browser.end(); 
    } 
    }) 
}, 

Вызов browser.end(); закрывает браузер, но сразу же открывается, и тесты продолжаются. Каждый отдельный случай терпит неудачу, поскольку разбиение на страницы не существует на данной странице. Я бы хотел закончить тест сразу после прохождения браузером.assert.equal. Есть ли способ сделать это?

ответ

0

Вы можете использовать try/catch.

У меня была такая же проблема с некоторыми тестами, и у меня было это, чтобы пропустить это утверждение вроде этого: вы пытаетесь что-то проверить, но если вы не найдете элемент, вместо того, чтобы терпеть неудачу, я просто показываю сообщение в консоли и закройте весь тест:

'Test product\'s UPSs' : function (browser) {   
    try { 
     browser.assert.elementPresent('@someElement');   
    } 

    catch(err) {   
     console.log('this product has no Special features! Skipping'); 
     process.exit(); 
    } 
} 

в случае, если у вас есть дополнительные тесты, которые вы знаете, что они не будут терпеть неудачу, и вы хотели бы продолжить с ними, просто оставить из process.exit (). Хотя это, возможно, не самый безопасный способ сделать это, по крайней мере, он выполняет свою работу.