在我的工具中,我记录了从用户应用程序生成的事件。现在用户可以使用我的工具来重播他的场景。
在回放用户录制的场景时,我使用以下方法将录制的事件一一发布到“EventQueue”:
eventQueueObj.postEvent(eventObj);
在大多数情况下,回放用户录制的场景没有问题。
为了解释我的问题,我将举一个简短的例子。
我的工具的用户想要检查在他的应用程序中,“文件”菜单下的“关闭”按钮是否有效。他的场景是:
1) 单击文件菜单。
2) 点击打开菜单项
3) 从文件选择器中选择文件。
4) 单击文件选择器上的打开。
5) 打开文件后,单击文件菜单。
6) 单击关闭菜单项。
重播第1步到第4步没有问题。现在在第5步,我应该等到文件打开(打开的文件很大,需要一些时间)。如果我不等到文件打开并继续前进,“文件”菜单下的“关闭”菜单项将保持禁用状态。所以在“关闭”菜单项上触发鼠标点击事件是没有用的。
我的问题是“如何从 Event Dispatch Thread 获取已完成当前事件处理的信息?”
在此之后,我可以点击“文件”菜单,然后点击第 6 步。
我不想使用sleep()递归检查“关闭”菜单项是否启用。因为我只想等待所需的时间,而不是大概的时间。
如果我使用sleep(),在大多数情况下,即使用户的文件打开操作完成,我也会浪费一些执行时间。