Javascript 为带有量角器的ionic应用程序创建一些测试,以测试用户是否能够成功地在chrome上拖放元素

Javascript 为带有量角器的ionic应用程序创建一些测试,以测试用户是否能够成功地在chrome上拖放元素,javascript,ionic-framework,protractor,angularjs-e2e,e2e-testing,Javascript,Ionic Framework,Protractor,Angularjs E2e,E2e Testing,我正在使用量角器为ionic应用程序创建一些测试,以测试用户是否能够成功地在浏览器上拖放元素。我首先尝试了mouseDown()、mouseMove()和mouseUp(),如下所示: it ('should destroy card after swipe', function() { var card1Move = {x: 200, y: 0}; browser.actions() .mouseMove(card1) .mouseDown()

我正在使用
量角器为
ionic
应用程序创建一些测试,以测试用户是否能够成功地在
浏览器上拖放元素。我首先尝试了
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();
});
但它不起作用。然后我尝试了内置的
dragandrop()
方法,如下所示:

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
模拟事件:

var dragandrop=函数(源、偏移量x、偏移量){
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数据传输={
项目:{},
类型:[],
文件:[],
setData:函数(格式、数据){
此.items[格式]=数据;
此.types.push(格式);
},
getData:函数(格式){返回this.items[format];},
clearData:函数(格式){删除此.items[格式];}
};
发射(源,“鼠标悬停鼠标悬停鼠标悬停拖动开始拖动拖动拖动器悬停拖动器悬停”,拖动点);
发射(目标,'dragenter dragover drop',dropPt);
发射(源,'dragend',dropPt);
函数发出(元素、事件、pt、数据){
events.split(“”).forEach(函数(事件){
var evt=source.ownerDocument.createEvent('MouseEvent');
evt.initMouseEvent(事件,!0,!0,窗口,0,0,pt.x,pt.y,!1,!1,!1,!1,0,null);
如果(/^drag | ^drop/.test(event))evt.dataTransfer=dataTransfer;
元素。调度事件(evt);
});
};
};

browser.actions().dragandrop(elem,target.mouseUp().perform();尝试一下谢谢你的回复!但是我的代码有什么不同呢?因为它不起作用。嘿,伙计!谢谢你的回复,但它仍然不起作用。这个问题是否与Chrome有关?要知道它是否与Chrome有关,请尝试Firefox。我还将在手动执行DnD时侦听事件,然后调整脚本以发送相同的事件。
browser.executeScript(dragAndDrop, card1.getWebElement(), 200, 0);