Java robot class mouse移动到指定位置

时间:2017-11-28 18:30:22

标签: java mousemove

说实话,我并不完全确定有什么问题。这是在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(5000);                     
                    robotdelta.mouseMove(587, 1045);                       
                    robotdelta.delay(1000);
                    robotdelta.mousePress(InputEvent.BUTTON1_MASK);     
                    robotdelta.delay(1000);     
                    robotdelta.mouseRelease(InputEvent.BUTTON1_MASK);       
                    robotdelta.delay(1000);
                    //Enters online platfrom
                    robotdelta.mouseMove(770, 21);
                    robotdelta.delay(1000);
                    robotdelta.mousePress(InputEvent.BUTTON1_MASK);     
                    robotdelta.delay(1000);     
                    robotdelta.mouseRelease(InputEvent.BUTTON1_MASK);       
                    robotdelta.delay(1000);                                                                                                                 
                 }


             //secondary situation 
             else 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) {


}       



}

1 个答案:

答案 0 :(得分:0)

作为免责声明,我在这个课程上玩了一段时间,最重要的是,我了解到这是一个用于非常基本的测试的工具,实际上,任何大规模的关键操作都不应该取决于这个课程的工作。完全符合预期。

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

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

由于某种奇怪的原因,它比您一次致电mouseMove()更加接近您想去的地方。我不知道为什么会这样,但是希望这会有所帮助。更不用说,在调用机器人执行不同操作之间以及确保调用waitForIdle()之间放置足够的延迟也是一个好主意。