Javascript 失败:等待异步角度任务在11秒后完成时超时

Javascript 失败:等待异步角度任务在11秒后完成时超时,javascript,angular,protractor,Javascript,Angular,Protractor,我想使用量角器对angular 2应用程序进行端到端测试,但我始终坚持以下信息: "Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds." 我的conf文件 exports.config = { directConnect: true, specs: ['spec.js'], // For angular2 tests useAllAngular2AppRoot

我想使用量角器对angular 2应用程序进行端到端测试,但我始终坚持以下信息:

"Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds."
我的conf文件

exports.config = {
  directConnect: true,
  specs: ['spec.js'],

  // For angular2 tests
  useAllAngular2AppRoots: true,
}
Chrome被打开,网站也被打开,然后在超时之前什么都没有发生

禁用同步时(使用browser.ignoreSynchronization=true;),一切正常。但我失去了“自动等待”功能,这是使用量角器的主要优点之一

该应用程序完全基于angular 2。那么为什么这不起作用呢

我们的开发人员告诉我,我们没有进行轮询(这可能是原因之一)。 顺便说一下,我们正在使用websocket体系结构。我不知道是否有联系

实际上,我根本不知道如何解决这个问题


有人能帮忙吗?

你猜得对。如果angular2应用程序中有任何未完成的任务,则会发生此错误

是的,最常见的原因是当应用程序连续轮询$timeout或$http时,量角器将无限期等待并超时。但这也可能发生在应用程序耗时超过11秒的情况下

有关不同超时的更多信息,请参阅

默认超时值为11秒。您可以通过调整中的以下值来更改此设置,并尝试查看是否仍存在问题

  /**
   * The timeout in milliseconds for each script run on the browser. This
   * should be longer than the maximum time your application needs to
   * stabilize between tasks.
   */
  allScriptsTimeout?: number;

临时启用browser.ignoreSynchronization会修复它,如回答中所述

(引发错误的代码)


修改测试用例并将 第一次单击后,应该可以正常工作


但是,推荐的方法是将
conf.js
文件中的默认超时覆盖为
allScriptsTimeout:110000

您可以尝试下面的解决方案并检查它是否工作感谢分享。我的问题出现在oauth工作流程集成之后。这让我困惑了好几天。应用您的修复程序后,我的BDD测试开始正常工作。请注意,这是不推荐使用的
waitForAngularEnabled
browser.ignoreSynchronization = true;
browser.ignoreSynchronization = false;