【发布时间】: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");
});
在执行上述代码时,以下是我的观察:
- 到
var plot0这一行,代码正常执行。 - 之后,
browser.action()...仅在量角器关闭 Chrome 之前执行。不知道为什么。 (我还加入了 sleep 来验证) - 同样在 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