在每一步之前\量角器中的事件发射器来处理动画



我正在尝试在我的量角器测试中处理动画。其中一个选项是禁用动画。但我不想这样做。第二个选项是在每一步之前执行此操作:

var EC = protractor.ExpectedConditions;
browser.wait(EC.stalenessOf(element(by.css('[class*="ng-animate"]'))), 5000);

它之所以有效,是因为 Angular 将"ng-animate"添加到动画中的元素类中。

所以有两个问题:

  1. 如何在量角器的每个步骤之前添加?
  2. 如何在量角器中添加事件发射器,以预定义的方法(如"单击"(发出某些内容?

感谢对这两个问题的任何回答,即使它不专门用于动画处理。

这是我的解决方案。它需要了解插件如何在量角器中工作。 有一个"waitForPromise"钩子工作不清楚,但这个例子帮助我执行了解决方案。

waitForPromise: function(){
return browser.executeAsyncScript(function(){
var callback = arguments[arguments.length - 1];
var counter = 0;
var checker = setInterval(function(){
if (counter>100){
clearInterval(checker);
callback();
}
if ($('[class*="ng-animate"]').length>0) {
// console.log('catched');
} else {
// console.log('notPresent or Disappeared');
clearInterval(checker);
callback();
}
counter++;
},50);
}).then(function() {
console.log('done');
});
}

在执行测试期间的每个承诺上,它只是检查是否有任何类为"ng-animate"的元素,如果有,它会等待该元素消失或计数器>100(5秒(。这可能不是最好的解决方案,因为它可能是测试步骤中的任何动画。在这种情况下,您将得到整体测试执行的巨大延迟。

最新更新