说实话,我并不完全确定有什么问题。这是在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) {
}
}
答案 0 :(得分:0)
作为免责声明,我在这个课程上玩了一段时间,最重要的是,我了解到这是一个用于非常基本的测试的工具,实际上,任何大规模的关键操作都不应该取决于这个课程的工作。完全符合预期。
要回答您的问题,实际上并没有办法让您准确地告诉mouseMove()
去哪里(至少在我使用它时不是这样)。但是,看起来很接近的是多次致电mouseMove()
到同一个地方(是的,这很hacky,不是可取的)。例如,如果我想将鼠标移至屏幕上的(300,600),我发现如果您这样做:
mouseMove(300,600);
mouseMove(300,600);
mouseMove(300,600);
// ... can put more if you want
由于某种奇怪的原因,它比您一次致电mouseMove()
更加接近您想去的地方。我不知道为什么会这样,但是希望这会有所帮助。更不用说,在调用机器人执行不同操作之间以及确保调用waitForIdle()
之间放置足够的延迟也是一个好主意。