我正在使用机器人编写一些集成测试。我让机器人打开一个菜单,它应该从菜单中选择一个选项;除了回车键似乎被忽略了。菜单将打开并选择正确的菜单项,但是如果我按 Enter 键,则没有采取任何应有的操作。如果我手动按下适当的键,它会执行预期的操作。如果我在非 java 应用程序上运行机器人,其他应用程序将正确响应 enter 事件。所以我已经验证了我正确地发送了一个 enter 事件并且 java 菜单应该响应它;但有些东西不起作用。
我也尝试用空格事件替换输入事件(菜单也应该响应)并且也没有得到响应。
我正在使用最新的 sun JDK 在 redhat linux 上运行。我很确定这不是我的代码的明显问题,因为我发现这篇文章描述了遇到完全相同问题的人,但它没有解决方案:http ://www.velocityreviews.com/forums/t666100-机器人和awt-on-linux.html
private void requestTest(String testName){
if(testName==currentTest)
return;
//overwrite config file with new data
currentTest=testName;
overwriteFile(configFile, getCurrentConfigFile());
//close current graph
pressKeyCombo(KeyEvent.VK_CONTROL, KeyEvent.VK_F4);
//open File menu
pressKeyCombo(KeyEvent.VK_ALT, KeyEvent.VK_F);
//select the 'load defaults' option
pressKey(KeyEvent.VK_DOWN);
pressKey(KeyEvent.VK_DOWN);
pressKey(KeyEvent.VK_DOWN);
pressKey(KeyEvent.VK_SPACE);
}