网页上上传文件的有点坑,不是 input 属性的 type=file 那种,所以使用不了 sendkeys(filepath),所以坑坑啊~
期望是:
1.打开上传文件 windows 选择窗口
2.提前将文件路径复制到剪贴板
3.模拟键盘使用 ctrl+v,复制路径,回车
第一次使用了 Action 方法:
action.sendKeys(Keys.CONTROL).sendKeys("v").keyUp(Keys.CONTROL).perform();
action.sendKeys(Keys.ENTER).perform();
死活没有成功,期间也换了多种写法,没有奏效,这 2 步程序是执行了,但是没有粘贴和回车。
不造原因是啥,难道是没有切换到 windows GUI 还是在页面,可是模拟按键不应该分这个吧~
第二次使用了 Robot:
原理一样,还是按下 ctrl+v 释放按键,按下回车,释放,结果成功了~
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);