@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())) : コンポーネントが必要です。ラッパー フレームを渡すと機能しません。そして、それがまさに私が得るのを待っているものであるため、私はテーブルを渡すことができません.
おそらく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));
何か助けはありますか?