与可执行JAR连接以操纵Swing GUI

时间:2010-12-19 03:14:18

标签: java swing executable-jar

我有一个可执行的JAR,它会调出一个Swing GUI,在选择框等选择后,按下OK按钮,会运行一个进程。我想自动执行这些选择并运行该过程。

我无权访问源代码或任何文档,因此在我看来,这样做的唯一方法是以某种方式连接到GUI并模拟用户。最糟糕的情况是使用java.awt.Robot来实际操作游标以进行所需的更改,但这非常混乱且容易出错。有没有更好的方法来与GUI进行交互?

1 个答案:

答案 0 :(得分:2)

在这个答案中,我假设你可以将jar加载到你自己的main()中并调用它们的GUI入门类。

Swing(如AWT)可让您轻松地内省GUI。 GUI可能是面板和儿童的树。一旦你通过树递归并找到你想要调用的小部件(这是困难的部分),你只需以编程方式单击按钮等。

[切断......] 我经常使用这种技术对我自己的GUI进行单元测试。我确保在我计划内省的组件上调用“setName()”,我深度优先通过我的UI递归,直到“getName()”产生我正在寻找的字符串。这让我可以重构GUI而无需非常更改测试脚手架。相同的概念通​​常适用于使用第三方GUI,但是它们很少使用setName(),因此识别组件可能更难 - 您需要查看按钮文本等。