量角器在SVG元素中的拖放

时间:2017-03-31 14:28:22

标签: protractor

我面临的问题是将元素拖放到一个编辑器页面,编辑器页面是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);

1 个答案:

答案 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()完成,因为没有构建函数。我这样用过。