我正在尝试使用以下代码在量角器中检索指令上的隔离范围:

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)

最佳答案

您不应将太大或太复杂的对象从客户端发送回量角器。就您而言,isolatedScope太大。

executeAsyncScript()executeScript()evaluate()(使用executeScript())可能会发生这种情况。

如果要解决问题,可以在量角器之外重现它吗?然后,很容易观察范围:右键单击“检查元素”,然后在开发控制台中键入$scope

如果您出于测试原因而试图检查示波器,那么您就没有在正确的位置进行测试。量角器测试是高级“黑匣子”测试。您在乎用户角度,例如。 “按钮可见吗?”。用户将永远不会与示波器进行交互,您也不会。要测试指令内部状态,请使用DOM客户端单元测试。

09-25 21:40