Java robot class mouse移动到指定的位置

说实话,我不完全确定是什么问题。 这是在if和if else下的大量其他基本机器人命令运动的简短版本。

每当我运行程序时,鼠标应移动到指定位置并单击。 但是当我运行程序时,它不会移动到我指示的位置,而是每次运行它时都会移动到不同的位置(我没有指定任何监听器来改变位置,所以位置不应该改变)。 我不知道这是我自己编写的代码还是我的导入代码? 该程序运行正常,直到最近我在最后添加了else以结束程序,我已经运行它没有其他,仍然提出相同的问题。 任何帮助将非常感激。

package creator; import java.awt.*; import java.awt.event.*; import java.io.IOException; import javax.swing.*; public class RobotDemo extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; public static void main(String[] args) throws AWTException, IOException { double value = (-0.66721); { if (value  0.3) { Robot robotdelta = new Robot(); //Enters Chrome from java robotdelta.delay(1000); robotdelta.mouseMove(587, 1045); robotdelta.delay(100); robotdelta.mousePress(InputEvent.BUTTON1_MASK); robotdelta.delay(100); robotdelta.mouseRelease(InputEvent.BUTTON1_MASK); robotdelta.delay(100); //Enters online platfrom robotdelta.mouseMove(770, 21); robotdelta.delay(100); robotdelta.mousePress(InputEvent.BUTTON1_MASK); robotdelta.delay(100); robotdelta.mouseRelease(InputEvent.BUTTON1_MASK); robotdelta.delay(1000); } else { system.exit(0); } } } public void actionPerformed(ActionEvent e) { } } 

作为一个免责声明,我正在玩这个课程一段时间,我学到的最重要的事情是这是一个非常基本的测试工具,并且真正没有大规模的关键操作应该依赖于这个类完全按照预期工作。

要回答你的问题,实际上没有办法确切地告诉mouseMove()去哪里(至少在我使用它的时候)。 然而,看起来非常接近的是将mouseMove()多次调用到同一个地方(是的,这非常hacky并且不可取)。 例如,我想在屏幕上将鼠标移动到(300,600),我发现如果你这样做:

 mouseMove(300,600); mouseMove(300,600); mouseMove(300,600); // ... can put more if you want 

出于一些奇怪的原因,它比你只需要调用mouseMove()一次更接近你想去的地方。 我不知道为什么会出现这种情况,但希望这会有所帮助。 更不用说,在调用机器人执行不同操作之间放置足够的延迟并确保调用waitForIdle()也是一个好主意。