Selenium webdriver 量角器故障暂停

Selenium webdriver 量角器故障暂停,selenium-webdriver,protractor,Selenium Webdriver,Protractor,我对量角器还不熟悉,我正在尝试找出如何让测试/跑步者在失败时暂停。理想情况下,我希望转换到nodejs调试器,但我愿意接受任何建议 我的用例基本上是,当测试失败时,我想看看UI处于什么状态,以帮助理解测试失败的原因 尼克 您可以在expect行之后或之前将浏览器置于睡眠状态,以查看发生了什么 browser.sleep(20000); // sleep 20 seconds 更新: 量角器现在支持.pause()方法 browser.pause() 阅读此处的文档:您应该将browser.d

我对量角器还不熟悉,我正在尝试找出如何让测试/跑步者在失败时暂停。理想情况下,我希望转换到nodejs调试器,但我愿意接受任何建议

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


尼克

您可以在
expect
行之后或之前将浏览器置于睡眠状态,以查看发生了什么

browser.sleep(20000); // sleep 20 seconds
更新: 量角器现在支持
.pause()
方法

browser.pause()

阅读此处的文档:

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

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

您还可以添加到jasmine配置中,以便在规范失败时停止: (与Progrator 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”,您可以切换到交互模式,以便可以尝试使用量角器命令。

browser.debugger()如何工作?每次我这样做,我都看不到任何特殊情况发生…@Nix您应该使用
--debug
标志运行量角器,并让
节点检查器运行以查看它pauses@Mohsen你有这方面的教程吗?有没有办法在失败时自动暂停?我事先不知道哪个测试会失败,所以现在我正在运行测试,在失败之前添加
browser.pause()
,然后重新运行测试。我希望有一个单次通过的解决方案。@DanielDarabos您可以使用Jasmine API来确定测试是否在每次
之后失败,如何使用调试器暂停,不管已经发生了什么,但是在失败时暂停是不可用的。一旦测试失败,规范就完成了,没有办法绕过它。