我在我的移动 Angularjs 应用程序中使用 Protractor 和 Jasmine。我想测试特定元素上的触摸事件(touchStart/touchEnd 等...)。像这样的东西:
it('should play video', function(){
var poster = by.css('.video-poster');
element(poster).??? //Simulate touch event here
});
最佳答案
更新:
由于 Protractor 返回 Selenium 元素查找器而不是 Angular 元素,因此您必须使用 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
注意:
Angular 似乎没有像 jQuery 那样提供 trigger()
方法,只有 triggerHandler()
,如https://docs.angularjs.org/api/ng/function/angular.element
关于Angularjs - 在 Protractor e2e 测试中模拟触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23720823/