4

在特定情况下,我必须完全控制我的鼠标,而在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 关闭之前,我可以在地图上看到一条直的红线,但后面没有任何弹出窗口(可能鼠标没有被操作类释放)

只是为了添加这次我没有plot0在代码中传递任何元素,我只是在执行上述规范之前手动将鼠标指针保持在地图上。

4

1 回答 1

0

我认为您mouseUp在链中缺少事件

于 2020-02-24T18:12:11.807 回答