2015-04-30 34 views
25

我一直在使用$超时进行轮询(另请参见:waitForAngular超时),这是造成间歇性超时的原因。我不知道它是否也会在没有投票的情况下失败。对于我们的团队来说,由于我们依赖于角度材料组件,因此更加重要。他们在持续使用$ timeout(func,0)的动画交互中占据重要地位。 此问题与issue #29966301类似,但重点介绍Angular Material和量角器之间的可能问题。 我真的很想知道,如果他们遇到了这些问题,那么大量使用Angular Material和Protractor的人会如何处理这些问题。使用角度材料和量角器进行E2E测试是否存在问题?

有趣的是,我没有在量角器和角材料github网站上看到任何其他能力的利用。由于它们都是来自Google的同一组的Angular库,因此@juliemr和量角器帮会与@ThomasBurleson和Material组讨论以使用量角器为角度材料提供全面的用例和E2E测试,以清除这些问题。

+0

不完全和答案,但对于动画,我已经成功地使用显式等待与预期的条件(http://stackoverflow.com/a/29151849/771848)。 – alecxe

+0

我其实已经开始全面使用EC。它确实减少了这些问题的发生,但它们仍然间歇性地发生。 –

+0

你能提供一个具体的例子吗? (HTML和测试中遇到问题的片段?) –

回答

1

好量角器旨在测试的角度,因此,如果您正在使用waitForAngular功能,您的网站的角度,你不应该使用,你应该做到以下几点beforeEach测试:

browser.ignoreSynchronization = false; 

,你可以这样做使你的测试速度更快,可能会帮助消除超时问题,您量角器,conf.js文件添加以下代码:

...

onPrepare: function() { 
    var disableNgAnimate = function() { 
     angular.module('disableNgAnimate', []).run(function($animate){ 
      $animate.enabled(false); 
     });  
    }, 
    browser.addMockModule('disableNgAnimate', disableNgAnimate); 
}, 

...

也许你应该检查这个video了。

+1

ignoreSynchronization似乎大量地混淆了测试,因为它看起来像是量角器团队打算使用它的方式。我已经禁用了动画,并且仍然偶尔在Angular上等待测试失败。无论是直接连接还是通过Selenium运行,都会发生。 –

1

我会补充说,禁用ngAnimate可能不够。您可能还必须通过在量角器'onPrepare'选项中注入CSS来禁用Angular Material的CSS动画。 (How to disable animations in protractor for angular js application)。

+0

您可以在答案中添加说明,并附上链接。 – Vikrant

+0

不知道我理解你的评论。你的意思是我应该在那里复制/引用链接的内容到这里? – dhwang