我尝试使用以下代码检索量角器中指令的隔离范围:
protractor.executeAsyncScript(function(callback){
var isolatedScope = angular.element("div[my-directive='data']").isolateScope();
callback(isolatedScope);
}).then(function(isolatedScope){
console.log("directive's isolatedScope:", isolatedScope);
});
Unfortunatley我从Chrome中收到以下错误:
UnknownError:未知错误:超出最大调用堆栈大小(会话信息:chrome = 34.0.1847.131)
答案 0 :(得分:4)
您不应该将从客户端太大/太复杂的对象发送回量角器。在您的情况下,isolatedScope
太大了。
这可能发生在executeAsyncScript()
,executeScript()
和evaluate()
(使用executeScript()
)。
如果您要解决问题,可以在量角器外重现吗?然后很容易观察范围:右键单击“inspect element”,然后在开发控制台中键入$scope
如果您尝试检查范围是否有测试原因,那么您没有在正确的位置进行测试。量角器测试是高级“黑盒子”测试。你非常关心用户的观点,例如。 “按钮是否可见?”。用户永远不会与范围交互,也不应该。要测试指令内部状态,请使用DOM客户端单元测试。
答案 1 :(得分:0)
发生Maximum call stack size exceeded
错误的原因之一是当函数调用自身时。例如
let next = async function () {
await $nextButton.click();
await next();
}
这里发生的是代码陷入无限循环并引发错误
因此,只需检查一下代码,并确保不要在偶然的地方这样做