使用量角器控制鼠标移动

时间:2016-03-09 12:55:57

标签: javascript google-chrome protractor angular-test

在特定情况下,我必须完全控制我的鼠标,而actions()课程我无法完成。

在我的应用程序中有一个地图,并且有一个功能,它使用套索选择地图的某些部分(比如我们用套索绘制一个圆圈,选择用红色圆圈表示),然后只有一个弹出窗口来进一步导航,但当我使用下面的动作类

var loc = element(by.xpath("//span[@id='imgLasso']"));
browser.actions()
    .mouseMove(loc, {x: 550, y: 436}) 
    .mouseDown()
    .mouseMove({x: 700, y: 236})
    .perform();

实际的鼠标移动并没有发生,除了使用Java机器人类之外我没有找到任何解决方案,因此我想创建一个批处理文件,它使用机器人方法调用Java类,但是我是不知道怎么做。

更新

it("working with lasso",function() {
    browser.sleep(5000);
    element(by.xpath("//span[@id='imgLasso']")).click();
    var plot0 = element(by.xpath("//span[@id='imgLasso']"));
    browser.sleep(2000); // intentional wait
    browser.actions()
        .mouseMove({x: 100, y: 100})
        .mouseDown()
        .mouseMove({x: 400, y: 0})
        .perform();

    browser.sleep(8000);
    element(by.xpath("//*[@id='imputTerritory']")).sendKeys("NewTeritory");
});

执行上面的代码,这是我的观察:

  1. 直到var plot0行,代码正常执行。
  2. 之后browser.action()...仅在量角器关闭Chrome之前执行。不知道为什么。 (我还包括睡眠来验证)
  3. 也就在Chrome关闭之前,我可以在地图上看到一条直线红线,但后面没有任何弹出窗口(操作类不会释放鼠标)
  4. 只是为了添加这段时间,我没有在代码中传递任何plot0元素,我只是在执行上述规范之前手动将鼠标指针保留在地图上。

1 个答案:

答案 0 :(得分:0)

我认为您在链中缺少testarr_sorted = testarr.sort(key=lambda vv: v[0], v[-1]) 事件