java - 机器人类 - KeyEvent 无法将文档上传到 KeyEvent.VK_V 处的 windows 文件夹
问题描述
我正在使用硒上传文档的特定场景。在多次失败后,我认为自己要调试代码。这是我的代码和错误。
public void uploadFile(String imagePath) {
StringSelection stringSelection = new StringSelection(imagePath);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);
Robot robot = null;
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
robot.delay(250);
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);
在调试时,我发现了以下结果。
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
The below happens where the selected path gets printed in the code right next to Vk.Control
C:\SAF\GIT\TestImage\Tests.docx robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
请让我知道是否有任何解决方法?
解决方案
保持窗口最大化,
before robot.delay(250);
driver.manage().window().maximize();
如果需要,在 keyevents 之后添加一点延迟,如下所示
robot.keyPress(KeyEvent.VK_CONTROL);
robot.delay(50); // it will slow down keyevent renderence and synchronize.
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);
推荐阅读
- rest - 使用 FOSRest BodyConverter 的 PUT 请求
- c# - 如何使用 C# 过滤 CSV 数据
- npm - 如何全局安装 gulp
- ios - Σ iOS SDK 中的计算
- openmodelica - 无法在 PyFMI 中模拟 OpenModelica ThermoSysPro FMU
- java - 如何在我的 Number.txt 文件中找到最大和最小的素数?如何读取文件?
- svelte - 将选定的 Svelte 组件编译为 CustomElements
- html - 如何修复 Ruby on Rails 中的“Unpermitted parameter: :avatar”错误
- stm32 - stm32 spi全双工从机模式
- jquery - 如果下拉菜单有更改,如何重置或未选中的单选按钮