gpt4 book ai didi

javascript - 如何在 angular2 中实现间隔/轮询以使用 Protractor ?

转载 作者:数据小太阳 更新时间:2023-10-29 04:43:42 26 4
gpt4 key购买 nike

我有一个 angular2 应用程序,我想用 Protractor 测试。

在这个应用程序中,我有一个包含图表的页面,该图表使用自动生成的数据定期更新。

显然 Protractor 的一个功能是在执行测试代码之前等待脚本和 http 调用完成。但是,如果有一个不断轮询的脚本永远不会完成, Protractor 将永远等待并在一定时间后超时。

在 angular1 中,这可以通过使用 $interval 实现轮询来解决, Protractor 不会等待。不幸的是,在 angular2 中没有 $interval 并且实现轮询的正确方法似乎是 Observable.interval,所以这就是我的代码:

Observable.interval(500)
.map(x => this.getRandomData())
.subscribe(data => this.updateGraph(data));

当测试运行此代码的页面时, Protractor 将超时。它等待页面完成加载并认为该脚本会在某个时候退出(实际上它会永远运行)。

  • angular2 中是否有 Protractor 可以识别的间隔机制,这样它就不会在运行 UI 测试之前等待轮询完成?

  • 如果不是,我如何告诉 Protractor 在执行更多测试代码之前不要等待此间隔完成?

编辑:为了澄清,超时问题已经存在于 angular1 的 Protractor 中,但可以通过使用 $interval 来解决,参见:

这在 angular2 中不起作用,因为没有 $interval

最佳答案

经过一番调查,我发现了两种可能的解决方案:

  1. browser.ignoreSynchronization = true 指示 Protractor 停止等待 http 调用和间隔脚本。但是,这可能会使编写 e2e 测试变得更加困难,因为现在您必须手动等待元素和页面加载,然后再对其进行测试。
  2. protractor-xhr-only plugin基本上与 ignoreSynchronization 做同样的事情,但只适用于间隔脚本。 Protractor 仍将等待 $http 调用完成。

两者都不是完美的解决方案,但聊胜于无。

关于javascript - 如何在 angular2 中实现间隔/轮询以使用 Protractor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36358405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com