swing - FEST-swing 示例不起作用,frame.isShowing() 返回 false

标签 swing gui-testing

尝试使用 FEST-Swing 进行 Swing GUI 测试,并使用 http://easytesting.org/swing/wiki/pmwiki.php?n=FEST-Swing.LaunchFromMain 中的示例

不幸的是,frame.isShowing() 总是返回 false,尽管我已经看到 JavaApp Swing 正在运行

查看我的代码

...
    ApplicationLauncher.application(JavaApp.class).start();
    GenericTypeMatcher<Frame> matcher = new GenericTypeMatcher<Frame>(Frame.class) {
        protected boolean isMatching(Frame frame) {
        System.out.println("title:" + frame.getTitle() + " showing:" +frame.isShowing()); // .getTitle());
            return "Java Application".equals(frame.getTitle()) && frame.isShowing();
        }
    };
    Robot robot = BasicRobot.robotWithNewAwtHierarchy();
    FrameFixture frame2 = WindowFinder.findFrame(matcher).withTimeout(5000).using(robot);
...

来自控制台日志

title: showing: false

两个问题:
1.我必须使用Frame而不是JFrame,否则无法匹配,导致标题不正确,我期望“Java Application”
2.frame.isShowing()总是返回false,看起来很奇怪

顺便说一句:最新代码似乎需要 GenericTypeMatcher() 的参数 rgs/拉里

最佳答案

问题是您在启动应用程序之后调用robotWithNewAwtHierarchy。所发生的情况是,在调用 robotWithNewAwtHierarchy 之前实例化的任何框架或对话框都不会被创建的 Robot 看到。

您可以将 robotWithNewAwtHierarchy 移动到启动应用程序的行之前,也可以使用 robotWithCurrentAwtHierarchy (这将看到任何实例化的框架或对话框,无论何时方法被调用。)

关于swing - FEST-swing 示例不起作用,frame.isShowing() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3296477/

相关文章:

java - 引脚重新验证

functional-testing - UI/GUI测试,功能测试和E2E测试之间有什么区别?

android - 原生 android 和 iOS 应用程序的 GUI 测试

java - 如何在 JCalendar 中设置自定义周开始?

Java Swing JTextArea 左右书写

java - 检查元素是否可以在没有明确等待时间的情况下单击

testing - Tcl/Tk - 自动化 GUI 测试

testing - SAP UI5的自动化UI测试

java - 如何通过单击 JDialog 中的按钮来运行 JFrame 中的方法?

java - JTextfield 的 getter,如日期