【发布时间】:2016-07-21 09:11:13
【问题描述】:
我有一个 angular2 应用,我想用量角器进行测试。
在这个应用程序中,我有一个带有图表的页面,该图表使用自动生成的数据定期更新。
显然量角器的一项功能是在执行测试代码之前等待脚本和 http 调用完成。但是,如果有一个不断轮询的脚本永远不会完成,量角器将永远等待并在一定时间后超时。
在 angular1 中,这可以通过使用 $interval 实现轮询来解决,量角器不会等待。不幸的是,在 angular2 中没有 $interval 并且实现轮询的正确方法似乎是 Observable.interval,所以这就是我的代码的样子:
Observable.interval(500)
.map(x => this.getRandomData())
.subscribe(data => this.updateGraph(data));
在测试运行此代码的页面时,量角器会超时。它等待页面完成加载并认为该脚本将在某个时候退出(实际上它会永远运行)。
angular2 中是否存在量角器可识别的间隔机制,以便在运行 UI 测试之前不等待轮询完成?
如果不是,我如何告诉量角器不要等待此间隔结束后再执行更多测试代码?
编辑:澄清一下,使用 angular1 的量角器中已经存在超时问题,但可以通过使用 $interval 来修复,请参阅:
- Timed out waiting for Protractor to synchronize with the page after 50001ms
- How to implement intervals in protractor/selenium
这在 angular2 中不起作用,因为没有 $interval。
【问题讨论】:
-
@close-voter:你不明白哪一部分?我很乐意进一步解释这个问题。
-
我将您的文章复制/发布到量角器问题:github.com/angular/protractor/issues/3349。你现在有没有更好的解决方案?
标签: javascript selenium angular protractor rxjs