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

Tib*_*ben 17 javascript protractor angular

我想使用Protractor端到端测试我们的angular 2应用程序,但我坚持使用以下消息:

"Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds."
Run Code Online (Sandbox Code Playgroud)

我的conf文件.

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

  // For angular2 tests
  useAllAngular2AppRoots: true,
}
Run Code Online (Sandbox Code Playgroud)

Chrome已打开,网站也已打开,直到超时才会发生任何事情.

禁用同步时(使用browser.ignoreSynchronization = true;),就可以了.但我失去了"自动等待"功能,这是使用Protractor的主要优势之一.

该应用程序完全基于角度2.所以为什么这不起作用?

我们的开发人员告诉我,我们不是轮询(根据Protractor文档可能的原因之一).顺便说一句,我们正在使用websocket架构.我不知道是否有链接.

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

有人可以帮帮忙吗?

Adi*_*ddy 6

你的猜测是正确的.当它们是您的angular2应用程序中运行的任何未完成任务时,将发生此错误.

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

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

默认超时值为11秒.您可以通过调整config.js中的以下值来更改此值,并尝试查看您是否仍然看到该问题

  /**
   * 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;
Run Code Online (Sandbox Code Playgroud)


eme*_*ery 5

临时启用browser.ignoreSynchronization修复它,因为在回答中报道在这里.

browser.ignoreSynchronization = true;
Run Code Online (Sandbox Code Playgroud)

(抛出错误的代码)

browser.ignoreSynchronization = false;
Run Code Online (Sandbox Code Playgroud)