我正在使用robotframework来实现桌面应用程序的自动化。我试图右键单击Mac Sierra,然后使用发送键选择在上下文菜单中生成的项目。我已从辅助功能设置激活鼠标键设置,以便NUMPAD 5将像鼠标指针一样右击。问题是,当我使用此命令时,它实际上是右键单击但是当我尝试使用send keys命令时,上下文菜单消失。所以,我无法从上下文菜单中选择项目。以下是右键单击的代码:
public void pressCtrl(String key) throws Exception {
if(key.contains("NUMPAD")){
int keyvalue = key.charAt(6);
int keycode = keyvalue + 48;
assertTrue(
String.format("'%c' is not an alphanumeric character", keycode),
(keycode >=KeyEvent.VK_A && keycode <=KeyEvent.VK_Z) || (keycode >=KeyEvent.VK_0 && keycode <=KeyEvent.VK_9) || (keycode >=KeyEvent.VK_NUMPAD0 && keycode <=KeyEvent.VK_NUMPAD9)
);
System.out.println("Press CTRL+"+key);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(keycode);
robot.delay(50);
robot.keyRelease(keycode);
robot.keyRelease(KeyEvent.VK_CONTROL);
因此,机器人框架上的命令序列是:
Press Ctrl NUMPAD5
Send Keys E
Press Enter
我的想法和尝试:
我无法确定在尝试使用发送密钥时右键单击生成的上下文菜单消失的原因。我手动尝试了这种组合,似乎在释放按键时右键单击消失的某些时间。我尝试了与我的自动化脚本不同的时间组合,但我总是找到相同的行为。相同的脚本和java代码在Windows上运行正常。