Angularjs - 模拟量角器端到端测试触摸事件 [英] Angularjs - simulate touch event in Protractor e2e test

查看:415
本文介绍了Angularjs - 模拟量角器端到端测试触摸事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用量角器与茉莉我的移动应用程序Angularjs。我想一个特定的元素上测试触摸事件(touchStart / touchEnd等)。是这样的:

 它('应该播放视频',函数(){
    VAR海报= by.css('视频海报。');
    元素(海报)???。 //此处模拟触摸事件
});


解决方案

更新:

由于量角器返回硒元素发现者不是棱角元素,你必须使用 executeScript()函数来调用就可以了JavaScript方法,如:

  VAR海报=元素(by.css('视频海报。'));
browser.executeScript(
    'angular.element(参数[0])triggerHandler(touchstart);',海报);

原文:

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

 元素(海报).triggerHandler(touchstart);

如果您在事件对象需要更多的东西,你可以创建一个这样的答案:<一href=\"http://stackoverflow.com/questions/21211036/jquery-trigger-event-in-angularjs-karma-test/21211207#21211207\">jQuery触发事件在AngularJS噶测试

注意:

这似乎角不为您提供触发()像jQuery 方法,只有 triggerHandler(),如每 https://docs.angularjs.org/api/ng/function/angular。元素

I use Protractor with Jasmine for my mobile Angularjs app. I want to test a touch event (touchStart / touchEnd etc...) on a particular element. Something like:

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

解决方案

Update:

Since Protractor returns a Selenium element finder not an angular element, you'll have to use the executeScript() function to call a JavaScript method on it, like:

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

Original:

You should be able to trigger the event, like:

element(poster).triggerHandler("touchstart");

If you need more stuff in the event object, you can create one like this answer: jQuery Trigger Event in AngularJS Karma Test

Note:

It seems Angular does not provide you with trigger() method like jQuery, only triggerHandler(), as per https://docs.angularjs.org/api/ng/function/angular.element

这篇关于Angularjs - 模拟量角器端到端测试触摸事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆