在量角器中等待元素by.css()

时间:2016-05-28 12:34:22

标签: angularjs unit-testing protractor

我有一些代码,其中$scope.$broadcast触发执行element.addClass()

的事件

我控制器中的代码

ctrlr.rollDice = function(){
 .... do some stuff 
 $scope.$broadcast('eventType', args);
}

我的指令中的代码

scope.$on('eventType', function(){ element.addClass('class'); });

我正在尝试等待直到事件被触发并且我的量角器测试中使用

执行了element.addClass
browser.wait(element(by.css('.activate')).isPresent,15000).then(function(isPresent){
      expect(isPresent).toBe(true);
    });

但是,我收到以下错误

  

TypeError:无法读取属性' getWebElements'未定义的

如何等待使用 .activate 显示

的元素

请注意element可以是任何随机可见元素......只是设置类。此外,如果我在我的实际Web浏览器中运行该项目......一切都运行成功。

1 个答案:

答案 0 :(得分:2)

试试这个:

browser.wait(() => $('.activate')).isPresent() ,15000);
expect($('.activate').isPresent()).toBe(true);

或ES5版

browser.wait(function() {
  return $('.activate').isPresent();
}, 15000);
expect($('.activate').isPresent()).toBe(true);

注意: element(by.css('.abc')) === $('.abc')