老实说,我不完全确定出了什么问题。这是 if 和 if else 下的大量其他基本机器人命令动作的简短版本。
每当我运行该程序时,鼠标应移动到指定位置并单击。但是,当我运行程序时,它不会移动到我指示的位置,而是每次运行时它都会移动到不同的位置(我没有指定任何侦听器来更改位置,因此位置不应更改)。我不知道这是否与我自己编写的代码有关,或者可能与我的导入有关?该程序一直正确运行,直到最近我在末尾添加了 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) {
}
}
作为免责声明,我在这个类上玩了一段时间,我学到的最重要的事情是这是一个用于非常基本测试的工具,实际上任何大规模的关键操作都不应该依赖于这个类完全按预期工作。
回答你的问题,确实没有办法得到exactly你告诉的地方mouseMove()
去(至少当我使用它时)。然而,似乎非常接近的是打电话mouseMove()
多次到同一个地方(是的,这非常hacky并且不可取)。例如,我想将鼠标移动到屏幕上的(300,600),我发现如果你这样做:
mouseMove(300,600);
mouseMove(300,600);
mouseMove(300,600);
// ... can put more if you want
由于某种奇怪的原因,它比你直接打电话更接近你想去的地方mouseMove()
一度。我不知道为什么会出现这种情况,但希望这会有所帮助。更不用说,在调用机器人执行不同操作之间设置足够的延迟也是一个好主意,并确保waitForIdle()
被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)