【问题标题】:Control mouse movement with Protractor使用量角器控制鼠标移动
【发布时间】:2016-06-23 20:46:46
【问题描述】:

在特定情况下,我必须完全控制我的鼠标,而使用 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 之前执行。不知道为什么。 (我还加入了 sleep 来验证)
  3. 同样在 Chrome 关闭之前,我可以在地图上看到一条红线,但后面没有任何弹出窗口(可能鼠标没有被操作类释放)

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

【问题讨论】:

  • 你试过browser.actions().dragAndDrop(...).perform()吗?
  • @alecxe 我试过 browser.actions().dragAndDrop(plot0,{x: 400, y: 500}).perform();但没有帮助,但当我喜欢这个时 browser.actions() .mouseMove(plot0, {x: 100, y: 100}) .mouseDown() .mouseMove({x: 400, y: 0}) .perform() ;这是我的观察 1.above 代码在 chrome 被量角器关闭之前执行 2.above 代码工作,因为我可以看到一条红色直线在 chrome 关闭之前闪烁但没有弹出窗口打开(应用程序的功能绘制line,circle or sth).是否有可能上面的代码不释放鼠标。
  • 是的,您需要一个命令来释放链中的鼠标按钮

标签: javascript google-chrome protractor angular-test


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多