【问题标题】:Protractor Pause On Failure量角器失败时暂停
【发布时间】:2014-03-10 19:13:14
【问题描述】:

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

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

尼克。

【问题讨论】:

  • 如何使用调试器暂停已经answered here但是在失败时专门暂停是不可用的。

标签: selenium-webdriver protractor


【解决方案1】:

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

茉莉花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();
                    }
                }
            });
        }
    }
}

茉莉花2:

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”切换到交互模式,这样你就可以尝试量角器命令了。

【讨论】:

  • 一旦测试失败,规范就完成了,没有办法。
【解决方案2】:

您可以在expect 行之后或之前使浏览器进入睡眠状态,以查看发生了什么。

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

更新:

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

browser.pause()

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

【讨论】:

  • browser.debugger() 是如何工作的?每次我这样做时,我都没有看到任何特别的事情发生......
  • @Nix 你应该用--debug 标志运行量角器并让node-inspector 运行以看到它暂停
  • @Mohsen 你有这方面的教程吗?
  • 有没有办法在失败时自动暂停?事先不知道哪个测试会失败,所以现在运行测试,在失败前加上browser.pause(),然后重新运行测试。我希望有一个一次性解决方案。
  • @DanielDarabos 您可以使用 Jasmine API 来确定 afterEach 中的测试是否失败
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2014-09-19
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    相关资源
    最近更新 更多