2016-05-28 2 views
1

У меня есть некоторый код, в котором $scope.$broadcast запускающее событие, которое выполняет element.addClass()Ожидание элемента by.css() в транспортире

код в моем контроллере

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: Cannot read property 'getWebElements' of undefined

Как ждать для элемента с классом .activate к обнаружиться ??

Обратите внимание, что element может быть любым случайным видимым элементом ... это просто установить класс. Также, если бы я запускал проект в своем фактическом веб-браузере ... все работает успешно.

ответ

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')

Смежные вопросы