java - 在 Java 中模拟关键输入以进行 JUnit 测试

标签 java keypress awtrobot

我想模拟按下 Enter 键。我尝试使用机器人类,但它似乎不起作用:

robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
try{Thread.sleep(50);}catch(InterruptedException e){}
robot.keyRelease(KeyEvent.VK_ENTER);

在我的主代码中,我有

 public void keyPressed(KeyEvent e) {
        if (e.getKeyChar() == KeyEvent.VK_ENTER) {
            System.out.println("ENTER KEY PRESSED");
            // DO SOMETHING;
        }
    }

因此,如果 keyPress 已注册,那么控制台应该打印出“ENTER KEY PRESSED”,但它没有这样做。

感谢您的帮助!

此外,如果您知道一种无需机器人类即可模拟关键事件的方法,请在下面发帖:)。

来源:How to simulate keyboard presses in java?

最佳答案

问题不仅仅在于您如何使用 Robot

KeyListener 仅当其附加的组件可聚焦且具有焦点时才会响应。

首先,不要使用KeyListener,使用key bindings相反,这将有助于解决焦点问题。

其次,确保您尝试与实际键盘焦点交互的窗口(并且焦点不在将使用 Enter 键的控件上)

关于java - 在 Java 中模拟关键输入以进行 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16429288/

相关文章:

java - 从 config.properties 加载 setForeground 的颜色

java - 如何检索与测试集关联的测试用例

java - 用于 Elasticsearch 的RestClient

java - 在处理中实现删除按钮

java - 将手势映射到按键命令

java - 为特殊字符生成 AWT keyevent

java - 如何实现与 JTable 交互的 JTable 选择

使用 kbhit 的 Python 套接字线程

java - 需要帮助获取返回窗口显示图像的函数

Java => 缩短机器人命令