Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度量角器executeScript/executeAsyncScript:超出最大调用堆栈大小_Javascript_Angularjs_Scope_Protractor - Fatal编程技术网

Javascript 角度量角器executeScript/executeAsyncScript:超出最大调用堆栈大小

Javascript 角度量角器executeScript/executeAsyncScript:超出最大调用堆栈大小,javascript,angularjs,scope,protractor,Javascript,Angularjs,Scope,Protractor,我正在尝试使用以下代码检索量角器中指令上的隔离作用域: protractor.executeAsyncScript(function(callback){ var isolatedScope = angular.element("div[my-directive='data']").isolateScope(); callback(isolatedScope); }).then(function(isolatedScope){ console.log("directive

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

protractor.executeAsyncScript(function(callback){
    var isolatedScope = angular.element("div[my-directive='data']").isolateScope();
    callback(isolatedScope);
}).then(function(isolatedScope){
    console.log("directive's isolatedScope:", isolatedScope);
});
不幸的是,我从Chrome收到以下错误:


未知错误:未知错误:超过最大调用堆栈大小(会话信息:chrome=34.0.1847.131)

您不应该将太大/太复杂的对象从客户端发送回量角器。在您的情况下,
isolatedScope
太大

这可能发生在
executesyncscript()
executeScript()
evaluate()
(使用
executeScript()
)的情况下

如果您正在排除故障,您能在量角器之外重现它吗?然后很容易观察范围:右键单击“inspect element”,然后在开发控制台中键入
$scope


如果您出于测试原因试图检查范围,那么您没有在正确的位置进行测试。量角器测试是高级“黑箱”测试。你很关心用户的视角,比如“按钮是否可见?”。用户永远不会与作用域交互,您也不应该这样做。要测试指令内部状态,请使用DOM客户端单元测试。

您不应该将太大/太复杂的对象从客户端发送回量角器。在您的情况下,
isolatedScope
太大

这可能发生在
executesyncscript()
executeScript()
evaluate()
(使用
executeScript()
)的情况下

如果您正在排除故障,您能在量角器之外重现它吗?然后很容易观察范围:右键单击“inspect element”,然后在开发控制台中键入
$scope


如果您出于测试原因试图检查范围,那么您没有在正确的位置进行测试。量角器测试是高级“黑箱”测试。你很关心用户的视角,比如“按钮是否可见?”。用户永远不会与作用域交互,您也不应该这样做。要测试指令内部状态,请使用DOM客户端单元测试。

超过最大调用堆栈大小的原因之一是函数调用自身时出错。比如说

let next = async function () {
    await $nextButton.click();
    await next();
}
这里发生的是代码进入无限循环并抛出错误


因此,只需检查您的代码,并确保您不会在某个地方意外地执行此操作

超过最大调用堆栈大小的原因之一是函数调用自身时出错。比如说

let next = async function () {
    await $nextButton.click();
    await next();
}
这里发生的是代码进入无限循环并抛出错误


因此,只要检查一下您的代码,并确保您不会在某个地方意外地这样做

您本可以回答自己的问题,因为您在GitHub()上得到了答案,这也会对我有所帮助!既然你在GitHub()上得到了答案,你就可以回答你自己的问题了。这对我也有帮助!