Angularjs - 在Protractor e2e测试中模拟触摸事件

Yan*_*aim 8 jasmine angularjs angularjs-e2e protractor

我使用Protractor和Jasmine作为我的移动Angularjs应用程序.我想在特定元素上测试触摸事件(touchStart/touchEnd等...).就像是:

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

Mel*_*igy 8

更新:

由于Protractor返回Selenium元素查找器而不是角元素,因此您必须使用该executeScript()函数在其上调用JavaScript方法,例如:

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

原版的:

您应该能够触发事件,例如:

element(poster).triggerHandler("touchstart");
Run Code Online (Sandbox Code Playgroud)

如果你在事件对象中需要更多的东西,你可以创建一个像这样的答案:AngularJS Karma Test中的jQuery触发事件

注意:

根据https://docs.angularjs.org/api/ng/function/angular.element,似乎Angular不提供trigger()像jQuery这样的方法.triggerHandler()