【问题标题】:Using keyboard input to trigger WebDriver events using Java使用键盘输入使用 Java 触发 WebDriver 事件
【发布时间】:2026-02-11 04:35:01
【问题描述】:

我试图通过为它创建热键来加速使用 selenium Webdriver 的 Web 应用程序的使用。我希望某些 webdriver 点击事件与键盘键相关联。例如,在键盘上按“s”会点击提交按钮。

我了解如何使用 webdriver 进行单击和定位元素,但不知道如何在 Firefox 打开时从 Java 中监听键(从 webdriver 获取调用)。我的应用程序没有 GUI,因为它正在打开一个 firefox 窗口,所以它会失去焦点,所以 KeyListener 不是一个选项。

我遇到了我正在研究的 JNI 库。任何其他建议我可以如何做到这一点?

【问题讨论】:

  • 我的诚实意见是要求您的开发人员直接在页面上实现此类快捷键。否则,您将花费数天时间开发诸如带有集成 Web 浏览器的 java 应用程序之类的东西,该浏览器正在监听关键事件......
  • 嗨 Pavel,这不是我的应用程序,但我需要每天使用它,并且需要花费大量时间手动执行重复性任务,这就是为什么我想创建热键供我个人使用。如果它是我的应用程序,我同意要求添加热键将是理想的。当我说我的应用程序没有 GUI 等时,我指的是我正在开发的 Java/WebDriver 应用程序,它在已经存在的 Web 应用程序上运行
  • 遇到了这个可能会起作用的库:kra.lc/blog/2011/07/java-global-system-hook
  • 我使用上面链接中的键盘的 java-global-system-hook 并且它正在工作。有没有人使用过 .jar 并且可以验证它不是恶意代码?它源自 JNI 原始库。

标签: java selenium webdriver keyboard-events


【解决方案1】:

在这种情况下,几乎总是自动化整个过程

更好

说,您需要每天更新员工的工资。最好花时间阅读 XLS 文件(这些数据是如何交付给注定要进行重复工作的人的几乎标准方式)并逐行阅读并以某种方式将其输入到应用程序中。

我知道我没有为您提供您期望的答案,但请尝试将整个过程自动化。与简单的键映射相比,这可能有点棘手,但可行 - 并且最终更快

【讨论】:

  • 您好,帕维尔,感谢您的回答。我熟悉 JXL 库,如果将数据作为 XLS 文件获取,自动化整个过程是要走的路。在这种情况下,我无法自动化整个过程,因为我需要手动验证数据,但是一旦验证了数据,就可以自动将其输入到 Web 应用程序中——这就是热键有用的地方。
  • 那么,您如何验证数据?在验证时,您可以使用验证数据创建新文件。 ;)
  • 我在想,如果数据好,按A键保存在文件X中,如果数据需要稍后重新检查,按B并通过电子邮件发送给Y等。验证是手动的而且我需要连接到操作系统以读取密钥的最佳方法,因为我认为仅靠 Java 是不可能的。现在我正在使用上面链接的 .jar 并且它工作正常 - 但也许有一个更简单的解决方案。