我正在为openLayers网络应用程序(类似于Google Maps)编写自动测试,试图像其他用户通常那样单击并拖动以平移地图。
经过多次尝试和研究,我仍然无法自动完成它。这是使用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)


预期结果:地图平底锅

实际结果:光标跳到位置,但地图不移动

没有错误讯息

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

最佳答案

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

光标的速度可能对于我的地图应用程序来说太快了,所以我将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/

10-12 21:23