【问题标题】:Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds失败:等待异步 Angular 任务在 11 秒后完成超时
【发布时间】:2017-05-08 05:00:47
【问题描述】:

我想使用 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
  useAllAngular2AppRoots: true,
}

Chrome打开了,网站也打开了,直到超时什么都没有发生。

禁用同步时(使用 browser.ignoreSynchronization = true; ),没关系。但我失去了“自动等待”功能,这是使用 Protractor 的主要优势之一。

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

我们的开发人员告诉我,我们没有进行轮询(根据Protractor documentation,这是可能的原因之一)。 顺便说一下,我们使用的是 websocket 架构。不知道有没有链接。

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

有人可以帮忙吗?

【问题讨论】:

标签: javascript angular protractor


【解决方案1】:

你的猜测是对的。当它们是在您的 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;

【讨论】:

    【解决方案2】:

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

    browser.ignoreSynchronization = true;
    

    (引发错误的代码)

    browser.ignoreSynchronization = false;
    

    【讨论】:

    • 感谢分享。我的问题是在集成了 oauth 工作流程后出现的。这让我困惑了几天。应用您的修复后,我的 BDD 测试开始正常工作。
    • 请注意,这已弃用 waitForAngularEnabled
    【解决方案3】:

    修改测试用例并放入 browser.waitForAngularEnabled(false); 第一次点击后,应该可以工作。

    但是,推荐的方法可以将conf.js 文件中的默认超时设置为allScriptsTimeout: 110000

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多