我将Protractor与Jasmine用于我的移动Angularjs应用程序。我想在特定元素上测试触摸事件(touchStart / touchEnd等...)。类似的东西:
it('should play video', function(){
var poster = by.css('.video-poster');
element(poster).??? //Simulate touch event here
});
答案 0 :(得分:8)
由于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 Trigger Event in AngularJS Karma Test
注意:强>
根据https://docs.angularjs.org/api/ng/function/angular.element
,Angular似乎没有为您提供jQuery这样的trigger()
方法,只提供triggerHandler()