量角器暂停失败

时间:2014-03-10 19:13:14

标签: selenium-webdriver protractor

我是量角器的新手,我正在试图弄清楚如何让测试/跑步者在失败时暂停。理想情况下,我希望转换到nodejs调试器,但我愿意接受任何建议。

我的用例基本上是,当测试失败时,我想看看UI处于什么状态,以帮助理解测试失败的原因。

尼克。

3 个答案:

答案 0 :(得分:9)

您还可以添加到jasmine配置,以便在规范失败时停止: (与protractor-screenshot-reporter如何工作相同)

for jasmine 1:

onPrepare: function () {
    exports.config = {
        onPrepare: function () {
            jasmine.getEnv().addReporter({
                reportSpecResults: function (spec) {
                    if (!spec.results().passed()) {
                        spec.results().items_.forEach(function (v) {
                            console.log(v.trace.stack);
                        });
                        browser.pause();
                    }
                }
            });
        }
    }
}

for jasmine2:

onPrepare: function () {
    jasmine.getEnv().addReporter({
        specDone: function (spec) {
            if (spec.status === 'failed') {
                console.dir(spec.failedExpectations.length);
                console.log(spec.failedExpectations[0].message);
                console.log(spec.failedExpectations[0].stack);
                browser.pause();
            }
        }
    });
}

然后在控制台中键入“repl”,切换到交互模式,这样就可以试用量角器命令。

答案 1 :(得分:3)

您可以在expect行之后或之前让浏览器进入睡眠状态,以查看正在进行的操作。

browser.sleep(20000); // sleep 20 seconds

更新

量角器现在支持.pause()方法。

browser.pause()

阅读此处的文档:https://angular.github.io/protractor/#/api?view=Protractor.prototype.pause

答案 2 :(得分:0)

您应该将browser.debugger()放在您希望测试停止的位置。

您必须运行selenium独立服务器。您可以从命令提示符处使用webdriver-manager start启动它。在您的量角器配置文件中,您必须拥有指向该服务器的selenium服务器的条目 seleniumAddress: 'http://localhost:4444/wd/hub',并且chromeOnly的条目应设置为false。调试仅适用于chrome浏览器。运行应用程序后,它将进入nodejs调试器。你必须按'c'才能继续。一旦你的调试语句命中,你可以做F12打开调试器,在控制台下,你可以使用window.clientSideScripts来查看你拥有的。我自己就在这一点上,但是clientSideScripts的文档是不存在的,所以你可以输入函数的名称,它将为你提供函数定义。然后,您可以尝试找出它所期望的参数。