背景:
在mac电脑上,使用selenium + java.awt.Robot ,模拟键盘 ctrl + v 操作、tab等操作无效,相关代码:
StringSelection selection = new StringSelection(text);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, null);
Robot robot = null;
try {
robot = new Robot();
} catch (Exception e) {
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
排查:
1.权限问题,系统设置-》隐私与安全性-》辅助功能,添加对应ide工具,重启即可
2.按键问题,win-control 和 mac-command键,mac中 要将 KeyEvent.VK_CONTROL 修改为KeyEvent.VK_META
新的问题:设置权限和修改按键后,启动脚本发现还是无法完成粘贴,仔细观察发现,启动脚本,打开浏览器,随后 java 程序打开,当前浏览器窗口被切走,失去焦点,导致无法粘贴
3.粘贴前,使用tab+commad重新切换到当前浏览器窗口
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_TAB);
4.如果还是不生效,关键节点适当加些延迟,Thread.sleep(1000); 或 robot.delay(500);
参考:
katalon Robot实现弹窗操作上传文件,Mac环境-优快云博客
File Upload using Selenium WebDriver and Java Robot Class - Stack Overflow