我们如何在Protractor中处理错误 - 基于Cucumber的框架?
有断言失败,这是一个真正的失败,javascript代码中有错误(例如 - 找不到元素,数组是空的,未定义的东西等等。)。我希望以优雅的方式处理后者。
目前Protractor测试因上述错误而失败,但消息不友好且难以理解。它们主要指向量角器库文件中的错误位置,而不是脚本中发生实际错误的位置(文件名,行号等)。
e.g
"NoSuchElementError: No element found using locator: By(css selector, .listContainer li:nth-child(1) span)">NoSuchElementError: No element found using locator: By(css selector, .listContainer li:nth-child(1) span)
at WebDriverError (node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:27:10)
at NoSuchElementError (node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:242:10)
at node_modules\protractor\built\element.js:705:27
at ManagedPromise.invokeCallback_ (node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1379:14)
at TaskQueue.execute_ (node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2913:14)
at TaskQueue.executeNext_ (node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2896:21)
at node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2775:27
at node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:639:7
at process._tickCallback (node.js:369:9)Error
当我做这样的事情来处理错误时 -
return selectAll.click().then(function(){
}, function(err){
console.log('error occured..');
console.log(err);
});
报告错误但测试通过。我希望它失败并且优雅地报告错误。
答案 0 :(得分:4)
你可以通过在错误中首先回调错误来做到这一点!
你可以这样做 -
return selectAll.click().then(function(){
}, function(err){
throw new Error('Error occurred!'); //this would fail the step definition as well
});