java - 使用 Java mousePress、mouseMove 和 mouseRelease 进行单击和拖动

标签 java groovy automated-tests openlayers mousepress

我正在为 openLayers Web 应用程序(类似于 Google map )编写自动测试,尝试让它单击并拖动以平移 map ,就像任何用户通常所做的那样。 经过多次尝试和研究,我仍然无法让它自动平移。这是使用 Chrome 驱动程序。

我的代码似乎是正确的,因为我尝试开始测试,然后快速切换到充满文本的记事本窗口,瞧,文本被突出显示。

Robot robot = new Robot()
robot.mouseMove(501,501) // starting cursor position, somewhere near the middle of the map
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK)
// robot.delay(1000) // tried this but it made no difference
Thread.sleep(1000)
robot.mouseMove(400,400) // another position, still within the map's frame
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK)

预期结果: map 平移

实际结果:光标跳转位置但 map 不动

没有错误消息

更新:如果我在测试运行时将鼠标光标稍微移动到 map 上,则会按预期进行平移。

最佳答案

与此同时,我可能已经找到了我自己问题的答案。

对于我的 map 应用程序来说,光标的速度可能太快了,因此我将 mouseMove() 方法放在循环中,每次迭代时,x 和 y 位置都会增加或减少一个像素。最后还添加了一个robot.delay(5)。结果看起来像是平滑的鼠标移动。 这是一个片段:

int pixX = 499
int pixY = 499

robot.mouseMove(500, 500) // Setting cursor starting position
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK)
robot.delay(500)

    while(pixX > 450 && pixY > 450) {
        robot.mouseMove(pixX, pixY)
        pixX--
        pixY--
        robot.delay(5)
    }
robot.delay(100) // Short delay at the end before releasing mouse button
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK)

关于java - 使用 Java mousePress、mouseMove 和 mouseRelease 进行单击和拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57364011/

相关文章:

java - 什么是 LAC 记录?

java - 你好,我想打印我的列表,它在哪里是用户类对象。谁能帮我?

java - activity中的很多方法

PHP - 数据访问并发测试

java - Solr 中 StandardTokenizerFactory 和 KeywordTokenizerFactory 的区别?

jenkins - 如何在jenkinsfile中获取代理/节点名称?

Groovy 隐式扩展点运算符

spring - 抽象类中的 Grails 服务

java - 运行脚本时如何向RFT播放窗口发送信息?

powershell - 我可以在 Azure 测试计划中自动化 pester 测试吗?