【发布时间】:2011-10-01 14:13:17
【问题描述】:
我正在使用机器人编写一些集成测试。我让机器人打开一个菜单,它应该从菜单中选择一个选项;除了回车键似乎被忽略了。菜单将打开并选择正确的菜单项,但是如果我按 Enter 键,则没有采取任何应有的操作。如果我手动按下适当的键,它会执行预期的操作。如果我在非 java 应用程序上运行机器人,其他应用程序将正确响应 enter 事件。所以我已经验证了我正确地发送了一个 enter 事件并且 java 菜单应该响应它;但有些东西不起作用。
我也试过用空格事件替换输入事件(菜单也应该响应),也没有得到响应。
我正在使用最新的 sun JDK 在 redhat linux 上运行。我很确定这不是我的代码的明显问题,因为我发现这篇文章描述了遇到完全相同问题的人,但它没有解决方案:http://www.velocityreviews.com/forums/t666100-robot-and-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);
}
【问题讨论】:
-
可能是平台问题,也可能是代码问题。向您发布说明问题的 SSCCE (sscce.org)。
-
那不是 SSCCE。请向我解释这是如何编译的?
-
这就是我所拥有的,我无法在小段代码中重现问题
-
没错。这就是创建 SSCCE 的意义所在。现在您知道问题出在您的代码中,而不是 JDK 问题。既然您现在基本代码可以工作,那么您就可以弄清楚 SSCCE 和您的真实代码之间的不同之处了。什么时候无法猜测你的真实代码在整个应用的上下文中是什么样子的。
标签: java integration awtrobot