使用WindowFinder查找模态对话框

6

我正在使用FEST来测试我的Java对话框,我需要测试是否创建了一个新的模态对话框。

@Before
public void setUp() throws Exception {
    TestFrame testFrame = GuiActionRunner.execute(new GuiQuery<TestFrame>() {
        @Override
        protected TestFrame executeInEDT() throws Throwable {

            panel = new CustomPanel();
            return new TestFrame(panel);
        }
    });

    frameFixture = new FrameFixture(testFrame);
    frameFixture.show();

    frameFixture.robot.waitForIdle();
}

注意:TestFrame是一个扩展JFrame的辅助类,用于单元测试。
在我的测试中,我点击一个按钮,使一个模态对话框出现。 我试图找到并验证对话框是否已创建,但是我所有的尝试都无法找到任何东西:
WindowFinder.findDialog("Window Title")).using(robot);

机器人的定义如下:

  1. 使用当前AWT层次结构的BasicRobot.robotWithCurrentAwtHierarchy();
  2. 使用新的AWT层次结构的BasicRobot.robotWithNewAwtHierarchy();
  3. 使用lookup范围指定frameFixture.robot (frameFixture => JFrame)

我也尝试指定机器人的查找范围:

robot.settings().componentLookupScope(ComponentLookupScope.ALL);

有很多关于FEST的例子可以在网上找到,这些例子都会调用robot()函数,但是我不知道这个函数具体是什么或者应该是什么。

为什么我无法找到我新创建的弹出对话框?


有没有可能提供一个完整的示例,以便我可以看看这些解决方案是否可行?我找到了一个创建机器人的示例: robot=BasicRobot.robotWithCurrentAwtHierarchy(); robot.settings().delayBetweenEvents(50); 还有另一个查找窗口的示例: WindowFinder.findDialog(MyDialog.class).withTimeout(10000).using(robot); 此外,请参阅此帖子,该帖子解释了在实例化任何框架或对话框之前必须设置机器人。http://stackoverflow.com/a/4965444/1324406 - Amber
2个回答

1

0

最近,我也在使用FEST进行测试。

在处理相同的情况时,我使用以下方法来模拟“获取此窗口/对话框”操作。

private DialogFixture blablawindow;
...
blablawindow = WindowFinder.findDialog("XXX").using(robot());
blablawindow.button("button1").click();

因为我对FEST不熟悉,所以有些需要注意的地方:

XXX不是在UI上显示的实际文本,你需要检查源代码来查看窗口/对话框的名称: 类似这样:setName("窗口的实际名称"); 或者任何Swing元素private javax.swing.JButton button1;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接