gpt4 book ai didi

java - FEST:在执行任何操作之前等待 GUI 加载

转载 作者:行者123 更新时间:2023-11-28 20:06:36 24 4
gpt4 key购买 nike

    @Before public void setUp() {
Robot robot = BasicRobot.robotWithCurrentAwtHierarchy();
ApplicationLauncher.application("myApp").start();

Pause.pause(5, TimeUnit.SECONDS);
frame = WindowFinder.findFrame("frame0").using(robot);

JTableFixture table = frame.table(new GenericTypeMatcher<JTable>(JTable.class) {
@Override protected boolean isMatching(JTable table) {
return (table instanceof myTreeTable);
}
});
}

这段代码运行良好。如果我们删除 5 秒暂停,则找不到该表,因为应用需要几秒钟时间来加载它。

我想知道是否有更清洁的方法。我在 ApplicationLauncher 之后尝试使用 robot.waitForIdle()(我想一旦 EDT 为空,一切都已加载),但它就是行不通。

我知道暂停可以使用某些条件作为何时停止的事件,但我不明白如何编写它,因为 JavaDoc 和官方文档很差。

  • Pause.pause(WaitForComponentToShowCondition.untilIsShowing(frame.component())) :我需要一个组件,如果我通过包装器框架它就不起作用。我不能通过 table ,因为那正是我等待得到的。
  • 我明白我可能应该使用 ComponentFoundCondition,但我不明白!我厌倦了:

           ComponentMatcher matcher = new GenericTypeMatcher<JTable>(JTable.class) {
    @Override protected boolean isMatching(JTable table) {
    return (table instanceof myTreeTable);
    }
    };

    Pause.pause(new ComponentFoundCondition("DebugMsg", frame.robot.finder(), matcher));

有什么帮助吗?

最佳答案

你可以使用 ComponentFinder定位组件。例如,基于问题中的匹配器:

final ComponentMatcher matcher = new TypeMatcher(myTreeTable.class);

Pause.pause(new Condition("Waiting for myTreeTable") {
@Override
public boolean test() {
Collection<Component> list =
window.robot.finder().findAll(window.target, matcher);
return list.size() > 0;
}
}, 5000);

这是按名称查找的替代方法:

final ComponentMatcher nameMatcher = new ComponentMatcher(){
@Override
public boolean matches(Component c) {
return "ComponentName".equals(c.getName()) && c.isShowing();
}
};

Pause.pause(new Condition("Waiting") {
@Override
public boolean test() {
Collection<Component> list =
window.robot.finder().findAll(window.target, nameMatcher);
return list.size() > 0;
}
}, 5000);

关于java - FEST:在执行任何操作之前等待 GUI 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com