为带有量角器的离子应用程序创建一些测试,以测试用户是否可以成功地在chrome上拖放元素
Creating some tests for an ionic app with protractor to test if the user can successfully drag and drop an element on chrome
我正在为带有protractor
的ionic
应用程序创建一些测试,以测试用户是否可以成功地在chrome
上拖放元素。我首先尝试了mouseDown()
、mouseMove()
和mouseUp()
,类似于以下情况:
it ('should destroy card after swipe', function() {
var card1Move = {x: 200, y: 0};
browser.actions()
.mouseMove(card1)
.mouseDown()
.mouseMove(card1Move)
.mouseUp()
.perform();
browser.sleep(500);
expect(card1.isPresent()).toBeFalsy();
});
但它没有起作用。然后我尝试了内置的dragAndDrop()
方法,如下所示:
it ('should destroy card after swipe', function() {
var card1Move = {x: 200, y: 0};
browser.actions()
.dragAndDrop(card1, card1Move)
.mouseUp()
.perform();
browser.sleep(500);
expect(card1.isPresent()).toBeFalsy();
});
但它也不起作用。你知道我的代码有什么问题吗?提前感谢您的回复!
如果拖放是HTML5实现,那么最好的机会可能是用executeScript
模拟事件:
browser.executeScript(dragAndDrop, card1.getWebElement(), 200, 0);
var dragAndDrop = function(source, offsetX, offsetY){
var rect = source.getBoundingClientRect();
var dragPt = {x: rect.left + (rect.width >> 1), y: rect.top + (rect.height >> 1)};
var dropPt = {x: dragPt.x + offsetX, y: dragPt.y + offsetY};
var target = source.ownerDocument.elementFromPoint(dropPt.x, dropPt.y);
var dataTransfer = {
items: {},
types: [],
files: [],
setData: function (format, data) {
this.items[format] = data;
this.types.push(format);
},
getData: function (format) { return this.items[format]; },
clearData: function (format) { delete this.items[format]; }
};
emit(source, 'mouseover mouseenter mousedown dragstart dragenter drag dragover dragleave', dragPt);
emit(target, 'dragenter dragover drop', dropPt);
emit(source, 'dragend', dropPt);
function emit (element, events, pt, data) {
events.split(' ').forEach(function(event){
var evt = source.ownerDocument.createEvent('MouseEvent');
evt.initMouseEvent(event, !0, !0, window, 0, 0, 0, pt.x, pt.y, !1, !1, !1, !1, 0, null);
if (/^drag|^drop/.test(event)) evt.dataTransfer = dataTransfer;
element.dispatchEvent(evt);
});
};
};
相关文章:
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 尽管链接成功并已成功下载,但未找到NPM模块
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 测试数组中每个项的内容
- 测试Angular Service解决错误回调中的promise
- 在另一个函数成功结束后调用该函数
- 在ajax成功后,cluetip不适用于首次点击活动元素
- 测试是否成功连接火碱
- 无法让茉莉花测试成功调用注入的服务
- 如何编写一个测试来验证函数是否已成功将字符串列表(在数组中指定)打印到屏幕上
- 如何运行无头YUI测试并在日志文件中记录成功/失败
- 测试Backbone.js模型保存使用Sinon不调用成功回调
- Howto:常规测试,看看小部件是否调用this.herited成功
- 如何获得变量警报(测试)从var测试成功ajax
- 没有expect()的Jasmine测试将成功
- Stripe在本地返回成功的测试事务,但不在活动页面上返回
- 为带有量角器的离子应用程序创建一些测试,以测试用户是否可以成功地在chrome上拖放元素
- 如何测试脚本加载是成功/失败