使用Robot定位主框架(JFrame)(FEST Swing测试)

时间:2015-10-13 10:00:42

标签: java swing fest

我正在使用Java Web Start应用程序(通过JNLP运行)。目前,我正在尝试使用此代码找到应用程序的主框架:

Process p = Runtime.getRuntime().exec("C:\\Windows\\System32\\cmd.exe /c cd C:/Users/ash/Documents/MyApp/Environment & launcher.jnlp", null, new File("C:\\Users\\ash\\Documents\\MyApp\\Environment"));
    p.waitFor();
    Thread.sleep(40000);
    robot = BasicRobot.robotWithCurrentAwtHierarchy();
    robot.settings().delayBetweenEvents(50);
FrameFixture frame = WindowFinder.findFrame(getMainFrameByTitle(".*?MyApp.*?")).using(robot);
    frame.focus();

但是我收到了错误:

org.fest.swing.exception.WaitTimedOutError:使用matcher swing.app.simple.test.JavaSwingTests$9@6c5b675e等待找到组件的超时时间 无法使用匹配器找到组件swing.app.simple.test.JavaSwingTests$9@6c5b675e。

以下方法是我用于按名称匹配框架:

private static GenericTypeMatcher<javax.swing.JFrame> getMainFrameByName(
        final String frame) {
    GenericTypeMatcher<javax.swing.JFrame> textMatcher = new GenericTypeMatcher<javax.swing.JFrame>(
            javax.swing.JFrame.class) {
        protected boolean isMatching(javax.swing.JFrame frameName) {
            return (frame.replace(" ", "")).equals(frameName.getName()
            .replace(" ", ""));
        }
    };
    return textMatcher;
}

任何人都可以告诉我,如果我做错了什么或不考虑我应该做的事情。我是FEST的新手,刚刚开始使用它

由于

1 个答案:

答案 0 :(得分:0)

似乎当前的awt层次结构将会看到应用程序,如果我只从本机jar中的Class运行它