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

时间:2014-05-18 10:13:23

标签: angularjs jasmine protractor angularjs-e2e

我将Protractor与Jasmine用于我的移动Angularjs应用程序。我想在特定元素上测试触摸事件(touchStart / touchEnd等...)。类似的东西:

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

1 个答案:

答案 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()