我正试图用量角器运行我的角端测试。有些情况下,select存在于模态中。根据运行测试的机器,这有时会失败,因为量角器无法找到使用:
的选择。 NoSuchElementError: No element found using locator: By.cssSelector("div#s2id_items”)
在较慢的机器上,它每次都有效,而在较快的机器上,它经常失败。我的猜测是,当量角器试图访问选择器时,模态仍然是动画的,因此,导致失败。
我已经尝试禁用动画没有成功的代码下面的onPrepare指令在我的量角器配置:
var disableNgAnimate = function() {
angular.module('disableNgAnimate', []).run(['$animate', function($animate) {
$animate.enabled(false);
}]);
};
browser.addMockModule('disableNgAnimate',disableNgAnimate);
我使用的是angular 1.4.3, bootstrap 3.3.5, protractor 2.1.0。
感谢编辑:1 -我没有使用显式等待,我也不想这样做,因为这些要么会大大降低测试速度,要么在某些情况下仍然容易失败。
您可以尝试使用预期条件来等待,例如:
var EC = protractor.ExpectedConditions;
var myElement= element(by.css('div#s2id_items'));
browser.wait(EC.presenceOf(myElement), 5000);
//rest of your code
这个等待不会减慢测试的速度,因为它只会等待足够长的时间来显示元素,如果没有显示,则在5秒后失败。
编辑:对于可点击的动画对象,您可以尝试内置的"elementToBeClickable"条件(只是替换上述示例中的presenceOf),或者编写自己的条件,这将做任何您喜欢的事情(函数返回true或false)。端到端测试应该像用户一样"思考",用户会等待动画结束,所以也许最好还是使用显式等待动画。