我面临的问题是将元素拖放到一个编辑器页面,编辑器页面是SVG元素。我正在使用此代码,但它无法正常工作
var dragAndDrop = require('html-dnd').code;
var dragDataType=element(By.id('{"name":"Filter","type":"Filter","icon":"filter_list","iconHex":""}'));
var dropDataType= element(By.id('___content'));
var offsetX = 1;
var offsetY = 1;
var offsetX = 300;
var offsetY = 250;
browser.executeScript(dragAndDrop, dragDataType, dropDataType, offsetX,offsetY);
答案 0 :(得分:0)
我已经实现了这样的拖放:
xxxx.protorype.dragNDrop= function(){
var offsetx = <offsetValueX>;
var offsety = <offsetValueY>;
this.getDropIndex(dragElement, function (dropIndex) {
var dropElement = element(<locator>).get(dropIndex);
dropElement.getLocation().then(function (location) {
offsetx = Math.round(offsetx + location.x);
browser.actions().mouseMove(dragElement)
.mouseDown()
.mouseMove(dropElement)
.mouseMove(dropElement, {x: offsetx, y: offsety})
.mouseUp().perform();
});
browser.waitForAngular();
expect(element(<your locator>).getAttribute()).toBe(dragElement.getAttribute());
});
};
xxxx.prototype.getDropIndex = function (elementHolder, callback) {
browser.waitForAngular();
elementHolder.getText().then(function (elementName) {
var index;
if (callback) {
callback(index);
}
});
};
这里使用browser.actions()完成,因为没有构建函数。我这样用过。