2016-01-27 27 views
3

在测试我的Angular App e2e时,我有一个承诺,可以快速解决问题,并且不会显示元素(当手动点击时它显示在测试之外)。量角器 - 需要放慢承诺解决

我使用此代码来减缓承诺解决。它确实成功减慢了量角器测试的其他一切......但它并没有减缓承诺的解决。有什么建议么?

origFn = browser.driver.controlFlow().execute; 

browser.driver.controlFlow().execute = function() { 
    var args; 
    args = arguments; 
    origFn.call(browser.driver.controlFlow(), function() { 
    return protractor.promise.delayed(100); 
    }); 
    return origFn.apply(browser.driver.controlFlow(), args); 
}; 
+0

你想测试或者是什么? – fracz

+0

排序....我有一个加载的旗帜。当一个承诺解决时,横幅被解雇。在这种情况下,横幅不显示,因为一切都很快。 – dman

+0

为了减慢没有任何明确的条件,我使用'browser.sleep()'函数。虽然它不是一种标准的编码技术,但是它完成了这项工作。希望能帮助到你。 –

回答

-1

首先,在执行下一个异步Promise之前,Protractor等待所有的$ http调用被解析。如果你在一些动画缓慢的问题,你可能想使用类似下面的代码块要等到元素isDisplayed()或isPresent()或更复杂的情况:如果一些负载指示灯出现

browser.wait(function() { 
    return element(by...).isDisplayed(); 
}, timeout); 
+0

这与模拟数据有关,问题在于动画的快速性,因为模拟数据很快。 – dman