量角器dragAndDrop由偏移位置元素

时间:2014-08-01 18:15:36

标签: drag-and-drop location action protractor

问题: 有没有办法可以将起始位置偏移到拖动?

我想编辑开始拖动过程​​的位置。测试我可以在不调整的情况下获取的另一个元素下面的代码可以正常工作:

var controlPoint = $$('circle.points').first();
browser.actions().
        dragAndDrop(controlPoint.getLocation(), {x: 500, y: 50}).
        perform();

然而,当我尝试将其设置为修改这样的位置时:

var controlPoint = $$('circle.points').first();
controlPoint.getLocation().then(function (loc) { 
    // would modify loc.x and loc.y here if this didn't give an error
    browser.actions().
        dragAndDrop(loc, {x: 500, y: 50}).
        perform();
});

我收到以下错误:

Failures:

  1) Single Segments should test dragging and dropping of control points
   Message:
     UnknownError: unknown error: at least an element or offset should be set
  (Session info: chrome=36.0.1985.125)
  (Driver info: chromedriver=2.10.267517,platform=Mac OS X 10.9.4 x86_64)
   Stacktrace:
     UnknownError: unknown error: at least an element or offset should be set
  (Session info: chrome=36.0.1985.125)
  (Driver info: chromedriver=2.10.267517,platform=Mac OS X 10.9.4 x86_64)
==== async task ====
mouseMove
    at Array.forEach (native)
==== async task ====
ActionSequence.perform
    at /Users/willko/Desktop/e2e_sketching/specs/sketch2.js:25:6
==== async task ====

2 个答案:

答案 0 :(得分:0)

问题出在dragAndDrop(loc,因为dragAndDrop()将ElementFinder或WebElement作为第一个参数,并且您正在传递loc,这是一个带有x和{的对象{1}}属性。

试试这个:

y

答案 1 :(得分:0)

是否可以将第二个参数或偏移参数化为dragAndDrop?拖放适用于硬编码的偏移对象,如此处描述的{x:500,y:50},但至少对我来说,将{x:x,y:y}视为未定义(在ActionSequence.mouseMove函数中)。