我是量角器的新手,我正在试图弄清楚如何让测试/跑步者在失败时暂停。理想情况下,我希望转换到nodejs调试器,但我愿意接受任何建议。
我的用例基本上是,当测试失败时,我想看看UI处于什么状态,以帮助理解测试失败的原因。
尼克。
答案 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的文档是不存在的,所以你可以输入函数的名称,它将为你提供函数定义。然后,您可以尝试找出它所期望的参数。