Protractor - 框架中的错误处理
Protractor - Error Handling in Framework
我们如何处理基于 Protractor - Cucumber 的框架中的错误?
存在断言失败,这是真正的失败,并且 javascript 代码中存在错误(例如 - 未找到元素、数组为空、未定义的内容等)。我希望以后能优雅地处理。
目前 Protractor 测试因上述错误而失败,但消息不友好且难以理解。它们主要指向量角器库文件中的错误位置,而不是脚本中实际发生错误的位置(文件名、行号等)
例如
"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);
});
报错但测试通过。我希望它失败并优雅地报告错误。
您可以通过在错误第一个回调中抛出错误来做到这一点!
你可以这样做 -
return selectAll.click().then(function(){
}, function(err){
throw new Error('Error occurred!'); //this would fail the step definition as well
});
我们如何处理基于 Protractor - Cucumber 的框架中的错误?
存在断言失败,这是真正的失败,并且 javascript 代码中存在错误(例如 - 未找到元素、数组为空、未定义的内容等)。我希望以后能优雅地处理。
目前 Protractor 测试因上述错误而失败,但消息不友好且难以理解。它们主要指向量角器库文件中的错误位置,而不是脚本中实际发生错误的位置(文件名、行号等)
例如
"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);
});
报错但测试通过。我希望它失败并优雅地报告错误。
您可以通过在错误第一个回调中抛出错误来做到这一点!
你可以这样做 -
return selectAll.click().then(function(){
}, function(err){
throw new Error('Error occurred!'); //this would fail the step definition as well
});