在特定情况下,我必须完全控制我的鼠标,而在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 之前执行。不知道为什么。(我也包括睡眠来验证) - 同样在 Chrome 关闭之前,我可以在地图上看到一条直的红线,但后面没有任何弹出窗口(可能鼠标没有被操作类释放)
只是为了添加这次我没有plot0
在代码中传递任何元素,我只是在执行上述规范之前手动将鼠标指针保持在地图上。