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