Angularjs - имитировать событие касания в тесте Protractor e2e

Я использую Protractor с Jasmine для своего мобильного приложения Angularjs. Я хочу проверить событие касания (touchStart/touchEnd и т. д.) для определенного элемента. Что-то типа:

it('should play video', function(){
    var poster = by.css('.video-poster');
    element(poster).??? //Simulate touch event here
});

person Yaniv Efraim    schedule 18.05.2014    source источник


Ответы (1)


Обновлять:

Поскольку Protractor возвращает средство поиска элементов Selenium, а не угловой элемент, вам придется использовать функцию executeScript() для вызова метода JavaScript, например:

var poster = element(by.css('.video-poster'));
browser.executeScript(
    'angular.element(arguments[0]).triggerHandler("touchstart");', poster);

Оригинал:

Вы должны иметь возможность инициировать событие, например:

element(poster).triggerHandler("touchstart");

Если вам нужно больше материала в объекте события, вы можете создать такой ответ: Триггерное событие jQuery в тесте кармы AngularJS

Примечание.

Кажется, что Angular не предоставляет вам метод trigger(), такой как jQuery, только triggerHandler(), согласно https://docs.angularjs.org/api/ng/function/angular.element

person Meligy    schedule 19.05.2014
comment
TNX за ответ. Это не сработало для меня. Я получаю: TypeError: Object #‹Object› не имеет метода «триггер». Это может быть связано с тем, что это тест Protractor, а элемент не является обычным элементом jQuery. - person Yaniv Efraim; 19.05.2014
comment
Эй, извините, я не ответил, когда комментарий был неполным. К настоящему времени вы, надеюсь, прошли его, но если нет, посмотрите, поможет ли обновленная версия. - person Meligy; 20.05.2014
comment
Привет. tnx еще раз за ответ. TriggerHandler привел к аналогичной ошибке: TypeError: Object #‹Object› не имеет метода 'triggerHandler'. Я предполагаю, что элемент (by.css('.video-poster')) также не является элементом jqLite... - person Yaniv Efraim; 20.05.2014
comment
Упс, простите мое невежество. Да, это средство поиска элементов Selinium github.com/angular/protractor. /blob/мастер/документы/ - person Meligy; 20.05.2014
comment
Спасибо чувак! это работает (мне пришлось добавить браузер для выполнения скрипта в вашем последнем обновлении). - person Yaniv Efraim; 21.05.2014
comment
спасибо, m8, но что, если я хочу имитировать touchStart, перемещение, а затем событие TouchEnd? - person Alexandros Spyropoulos; 04.09.2014
comment
вы пробовали что-то вроде stackoverflow.com/questions/25664551/ - person Meligy; 05.09.2014