【问题标题】:Protractor timeout with long running $http asynchronous tasks长时间运行的 $http 异步任务的量角器超时
【发布时间】:2017-06-28 21:47:29
【问题描述】:

由于长时间运行的 $http 请求超时,我的 e2e 测试失败。出现以下错误: 以下任务待处理: - $http:...... ScriptTimeoutError: 异步脚本超时: 10 秒内未收到结果。

根据 https://github.com/angular/protractor/issues/169

,我已使用 $interval 服务在我的 Angular 代码中进行 http 调用以解决此类问题

但量角器仍然因上述错误而失败。 我正在使用角度 1.6.x 和量角器 5.x。

谁能帮帮我?

【问题讨论】:

  • 我使用事件流和 http requetss 的 Angular 应用程序永远不会关闭,因此量角器会超时。我使用 $interval 来包装我长时间运行的 http 请求,但对于长时间运行的任务,量角器仍然超时。

标签: angularjs protractor


【解决方案1】:

你需要告诉 Protractor 不要等待 Angular 的 $http 和 $timeout,像这样:

不推荐使用的旧方式:

browser.ignoreSynchronization = true;

新的正确方法:

browser.waitForAngularEnabled(false);

【讨论】:

  • 如果 browser.ignoreSynchronization = true;使用然后量角器将永远不会等待 $timeout 或 $http 在完成之前完成,这会使测试变得不稳定。
  • 但他可以在测试中的 $timeout 或 $http 部分之后设置browser.ignoreSynchronization = false;
  • 问题是这样的事件流(长时间运行)http请求正在用于所有视图,所以每次我让 browser.ignoreSynchronization = false 我再次得到相同的超时。所以我想让我的量角器忽略这么长时间运行的http请求。
【解决方案2】:

根据您的错误消息,Protractor 似乎正在等待 11 秒的默认超时,以便 Angular 完成。您可以通过增加allScriptsTimeout 来更改此设置,请参阅here

你试过了吗?

更新:

我一直在研究轮询和间隔的东西,也许protractor git 上的这个链接有帮助。你也读过this吗?

【讨论】:

  • 是的,我尝试将最长等待时间设置为 300 秒。但它仍然超时,因为一些 asnyc $http 请求需要更长的时间。我使用了事件流,因此 $http 请求永远不会关闭,量角器会等待并超时。
猜你喜欢
  • 1970-01-01
  • 2016-05-23
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多