【发布时间】:2017-03-25 04:09:15
【问题描述】:
此代码用于机器人框架中的自动化目的。在查找器窗口上单击鼠标右键后,我想发送“e”、“d”等键并从上下文菜单中选择一个项目。这是Java代码:
public void sendKeys(String text) throws Exception {
int len = text.length();
char curr;
for (int index=0; index<len; index++) {
curr = text.toUpperCase().charAt(index);
assertTrue(
String.format("'%c' is not an alphanumeric character", curr),
(curr>=KeyEvent.VK_A && curr<=KeyEvent.VK_Z) || (curr>=KeyEvent.VK_0 && curr<=KeyEvent.VK_9)
);
robot.keyPress(curr);
robot.keyRelease(curr);
}
System.out.println("Send Keys "+text);
}
在 Windows(几乎所有版本)上,我完全可以发送密钥,但在 Mac Sierra/El Capitan 上,它不会抛出错误,而是实际上选择了文件。我尝试了发送键输入的不同组合,例如“e”、“d”、“o”等,使用所有这些输入来选择文件,而不是实际选择上下文菜单上的项目。
PS:上下文菜单中有我在输入中用于发送键的项目。
【问题讨论】:
-
您确定这不是 Mac 上的预期行为吗?
-
是的,我确定。我手动尝试过,我可以从上下文菜单中选择项目
-
不确定MAC问题,但你是否一直使用按键和释放?我通常只在使用 SHIFT 或 CTRL 时使用 keyPress 和 release。尝试不使用 keyRelease!
-
我也有我的 enterString 版本,如果你愿意,你可以试试。但我从未在 MAC 上测试过
-
@Waman - 我尝试了没有 keyRelease 的代码,但它没有用。你能分享 enterString 代码,我会在 Mac 上试试?
标签: java macos automation robotframework