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