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

标签 angularjs jasmine protractor angularjs-e2e

我在我的移动 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/

相关文章:

selenium - 使用 Protractor 定位链接的最佳方法

Protractor - toBe(truth) 和 toBeTruthy() 之间的区别

javascript - 淡入 AngularJS 上的数据

javascript - Jasmine 测试 Backbone,Scoping 问题

javascript - 找不到模块 '../build/Release/bson' ] 代码 : 'MODULE_NOT_FOUND' } js-bson: Failed to load c++ bson extension, 使用纯 JS 版本

jasmine - 如何查看当前正在执行哪些 Protractor 测试?

jasmine - 如何在 Cloud9 中使用 Jasmine?

javascript - 简化 Protractor 中的嵌套 promise

angularjs - Angular ui.router state.go ('statename' ) 不工作

javascript - Angular + jQuery 产生 "Uncaught object"错误而不是显示它