我需要编写一个程序来通过它是 GUI 以编程方式控制 Java Swing 应用程序。
该程序需要能够将值放在应用程序的文本字段中,然后单击“确定”按钮,就像人类可以使用此应用程序一样。
我不熟悉 Swing,所以我不知道从哪里开始。我查看了一些 Java Swing GUI 测试工具,但它们似乎都需要启动 Swing 应用程序作为工具的一部分,而在我的用例中,它必须能够在不同的进程中控制已经运行的 Swing 应用程序。
我需要编写一个程序来通过它是 GUI 以编程方式控制 Java Swing 应用程序。
该程序需要能够将值放在应用程序的文本字段中,然后单击“确定”按钮,就像人类可以使用此应用程序一样。
我不熟悉 Swing,所以我不知道从哪里开始。我查看了一些 Java Swing GUI 测试工具,但它们似乎都需要启动 Swing 应用程序作为工具的一部分,而在我的用例中,它必须能够在不同的进程中控制已经运行的 Swing 应用程序。
java awt 机器人类正是用于自动化 gui 交互。在这里看到一篇不错的介绍文章。
使用机器人类,您可以通过名称/id/position/whatever 来定位各种 gui 元素,并以与用户生成的事件相同的方式与它们交互。
关于将 ui 作为工具的一部分运行 - 当然这是最简单的解决方案,但您也可以使用附加 API将代码注入到已经运行的 JVM 中。您可以编写一个 java 代理并将其从另一个 java 进程(您的自动化工具)附加到正在运行的 UI 应用程序中。这与调试器和分析器使用的机制相同。javadocs中有一些示例代码
您可能想看看“机器人”类和相关技术:
如果您只想从第二个“调试测试”应用程序生成/发送关键命令,您可以使用 Java 类Robot
如果您想进行更多更改,您可以为 Booth Java 应用程序创建一个RMI 连接,并从一个到另一个进行通信。原始应用程序是服务器,您的调试应用程序是客户端。
因此,您可以注册客户端并向服务器发送命令。客户端可以使用服务器的 java 类。课程通过 RMI 提交。所以客户端可以直接控制服务器的框架。
编辑:
您也可以使用Mouse-Click Recorder。您可以启动您的摇摆应用程序,启动记录器并单击/键入您想要的任何内容到您的摇摆应用程序中。
每一次点击都会被存储。下次在同一屏幕位置启动摇摆应用程序时,您可以启动录制的鼠标事件,您的光标/键盘将神奇地用于填充您的摇摆应用程序。