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

时间:2016-12-22 14:25:22

标签: javascript angular protractor

我想使用Protractor端对端测试我们的角度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;),它没问题。但我失去了#34;自动等待"功能,使用量角器的主要优点之一。

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

我们的开发人员告诉我,我们不是民意调查(根据Protractor documentation可能导致的原因之一)。 顺便说一句,我们正在使用websocket架构。我不知道是否有链接。

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

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:6)

你的猜测是正确的。当他们在angular2应用程序中运行任何未完成的任务时,会发生此错误。

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

的情况下

有关不同超时的详情,请参阅here

默认超时值为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;

答案 1 :(得分:5)

暂时启用browser.ignoreSynchronization修复它,如答案here中所述。

library(ggplot2)
all <- ggplot() + 
    geom_line(data = df1, aes(x = gain, y = 
    prob), color = "red") + ylim(c(0,1)) +
    geom_line(data = df2, aes(x = loss, y = 
    prob), color = "blue") + ylim(c(0,1)) 

(抛出错误的代码)

browser.ignoreSynchronization = true;

答案 2 :(得分:2)

修改测试用例并放入 第一次点击后browser.waitForAngularEnabled(false);应该有效。

但是,建议的方法可以覆盖conf.js文件中的默认超时allScriptsTimeout: 110000