【发布时间】:2017-05-11 17:34:30
【问题描述】:
通常,拖放是使用 2 个元素完成的。
但是,如果我有一个动态网格,我想通过单击并拖动它然后释放来选择它的一部分。 (类似于拖放)
我已经能够获得 x 和 y 坐标,但我不确定如何在没有元素的情况下使其工作。
【问题讨论】:
标签: protractor
通常,拖放是使用 2 个元素完成的。
但是,如果我有一个动态网格,我想通过单击并拖动它然后释放来选择它的一部分。 (类似于拖放)
我已经能够获得 x 和 y 坐标,但我不确定如何在没有元素的情况下使其工作。
【问题讨论】:
标签: protractor
看起来需要一个元素。 使用元素(body)后,我就可以进行拖放了。
【讨论】:
var offsetx = dndoffset.x;
var offsety = dndoffset.y;
browser.waitForAngular();
this.getTargetIndex(<ObjectToBeDragged>,function (targetIndex) {
var targetElement = element.all(by.repeater(<ng-repeat value>)).get(targetIndex);
targetElement.getLocation().then(function (location) {
offsetx = Math.round(offsetx + location.x);
browser.actions().mouseMove(<ObjectToBeDragged>)
.mouseDown()
.mouseMove(targetElement)
.mouseMove(targetElement, {x: offsetx, y: offsety})
.mouseUp().perform();
});
browser.waitForAngular();
});
以上是我用来拖拽的sn-p。你总是在 DOM 中有元素(即使它是动态的)。您必须选择正确的并将其放置在那里。
由于我们有 ng-repeat,我们使用 by.repeater() 来动态定位元素。
【讨论】: