发送键 Java 代码在 Mac 上不起作用
Send keys Java code is not working on Mac
此代码用于机器人框架中的自动化目的。在查找器 window 上单击鼠标右键后,我想发送 "e"、"d" 等键和 select 上下文菜单中的项目。这是 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 上它不会抛出错误,但实际上 selects 文件。我尝试了不同的发送键输入组合,如 "e"、"d"、"o" 等,使用所有这些输入文件得到 selected 而不是实际 selecting 上下文菜单中的项目。
PS:上下文菜单包含我在输入中用于发送键的项目。
这是我用的:
public static void enterString(String value)
{
String Keyvalue=value.toUpperCase();
//System.out.println(Keyvalue);
for (int i=0;i<Keyvalue.length();i++)
{
//System.out.println(Keyvalue.charAt(i));
if(Keyvalue.charAt(i) == ':')
{
System.out.println("its a colon");
RoboKey.keyPress(KeyEvent.VK_SHIFT);
RoboKey.keyPress(KeyEvent.VK_SEMICOLON);
RoboKey.keyRelease(KeyEvent.VK_SEMICOLON);
RoboKey.keyRelease(KeyEvent.VK_SHIFT);
}
else if (Keyvalue.charAt(i) == '.')
{
RoboKey.keyPress(KeyEvent.VK_PERIOD);
}
else if (Keyvalue.charAt(i) == '_')
{
RoboKey.keyPress(KeyEvent.VK_SHIFT);
RoboKey.keyPress(KeyEvent.VK_MINUS);
RoboKey.keyRelease(KeyEvent.VK_MINUS);
RoboKey.keyRelease(KeyEvent.VK_SHIFT);
}
else
{
RoboKey.keyPress((int)Keyvalue.charAt(i));
}
}
}
此代码用于机器人框架中的自动化目的。在查找器 window 上单击鼠标右键后,我想发送 "e"、"d" 等键和 select 上下文菜单中的项目。这是 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 上它不会抛出错误,但实际上 selects 文件。我尝试了不同的发送键输入组合,如 "e"、"d"、"o" 等,使用所有这些输入文件得到 selected 而不是实际 selecting 上下文菜单中的项目。
PS:上下文菜单包含我在输入中用于发送键的项目。
这是我用的:
public static void enterString(String value)
{
String Keyvalue=value.toUpperCase();
//System.out.println(Keyvalue);
for (int i=0;i<Keyvalue.length();i++)
{
//System.out.println(Keyvalue.charAt(i));
if(Keyvalue.charAt(i) == ':')
{
System.out.println("its a colon");
RoboKey.keyPress(KeyEvent.VK_SHIFT);
RoboKey.keyPress(KeyEvent.VK_SEMICOLON);
RoboKey.keyRelease(KeyEvent.VK_SEMICOLON);
RoboKey.keyRelease(KeyEvent.VK_SHIFT);
}
else if (Keyvalue.charAt(i) == '.')
{
RoboKey.keyPress(KeyEvent.VK_PERIOD);
}
else if (Keyvalue.charAt(i) == '_')
{
RoboKey.keyPress(KeyEvent.VK_SHIFT);
RoboKey.keyPress(KeyEvent.VK_MINUS);
RoboKey.keyRelease(KeyEvent.VK_MINUS);
RoboKey.keyRelease(KeyEvent.VK_SHIFT);
}
else
{
RoboKey.keyPress((int)Keyvalue.charAt(i));
}
}
}