在一个特定的场景下,我需要完全控制我的鼠标,但是使用
在我的应用程序中有一个地图和一个功能,它使用套索选择地图的某个部分(比如我们用套索画一个圆圈,选择区域用红色圆圈表示),然后才会弹出进一步导航的窗口。但是当我使用以下代码的
实际鼠标移动不会发生,我找不到解决方法,除非使用Java机器人类(Java robot class),因此我想创建一个批处理文件,调用其中包含机器人方法的Java类,但我不确定该如何实现。
执行以上代码后,我有以下观察结果:
actions()
类无法实现。在我的应用程序中有一个地图和一个功能,它使用套索选择地图的某个部分(比如我们用套索画一个圆圈,选择区域用红色圆圈表示),然后才会弹出进一步导航的窗口。但是当我使用以下代码的
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 robot class),因此我想创建一个批处理文件,调用其中包含机器人方法的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()...
只有在Protractor关闭Chrome之前才会执行。不知道为什么。(我还包括了sleep来验证) - 也就在Chrome关闭之前,我可以看到地图上的一条直线,但没有任何弹出窗口(可能是由于actions类未释放鼠标)。
补充一下,这次我没有在代码中传递任何plot0
元素,我只是手动将鼠标指针放在地图上,然后执行上述规范。
browser.actions().dragAndDrop(...).perform()
吗? - alecxe