量角器 - 框架中的错误处理

时间:2016-09-02 15:02:29

标签: javascript protractor cucumberjs

我们如何在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);
            });

报告错误但测试通过。我希望它失败并且优雅地报告错误。

1 个答案:

答案 0 :(得分:4)

你可以通过在错误中首先回调错误来做到这一点!

你可以这样做 -

return selectAll.click().then(function(){

        }, function(err){
           throw new Error('Error occurred!'); //this would fail the step definition as well
        });