使用 org.fest.swing.fixture.FrameFixture::panel() 查找 Swing 面板,需要显示面板吗?
FInding Swing panels with org.fest.swing.fixture.FrameFixture::panel(), it requires panel to be showing?
我想使用 FEST 来测试一个 Swing 组件是不可见的。
我尝试使用 org.fest.swing.fixture.FrameFixture
方法 panel(“foo”)
但是失败了,因为它需要 requireShowing=true.
无论现在是否可见,使用 FEST 查找面板的惯用方法是什么?
Assert.assertFalse(panel.getFooPanel().isVisible()); // works ok
myFrameFixture.panel(“foo”).requireNotVisible(); // fails
第二行给出了这个...
javax.swing.JPanel[name='foo']
org.fest.swing.exception.ComponentLookupException: Unable to find component
using matcher
org.fest.swing.core.NameMatcher[name='foo, type=javax.swing.JPanel, requireShowing=true].
编辑:
我使用 JComboBox 进行了类似的测试,使用的是
Jay Fichadia,但在我调用 .requireNotVisible()
之前,它似乎仍然需要该项目可见
例如单独尝试 new JComboBoxFixture(frame.robot,"grid_combo");
(没有实际的 requireNotVisible() 检查)给出 ...
Caused an ERROR
Unable to find component using matcher org.fest.swing.core.NameMatcher[name='grid_combo', type=javax.swing.JComboBox, requireShowing=true].
尽管我们在组件层次结构中有:
javax.swing.JComboBox[name='grid_combo', selectedItem='A', contents=['A', 'B'], editable=false, enabled=false, visible=false, showing=false]
您尝试过使用 new JPanelFixture(robot,"foo").requireNotVisible()
;
我刚遇到同样的问题,在看到这里没有答案后,我自己找到了解决方案。
问题是 frameFixture 默认只查找可见的组件。所以如果你想搜索不可见的组件,你必须改变这个设置。您可以使用:
myFrameFixture.robot.settings().componentLookupScope(ComponentLookupScope.ALL);
我想使用 FEST 来测试一个 Swing 组件是不可见的。
我尝试使用 org.fest.swing.fixture.FrameFixture
方法 panel(“foo”)
但是失败了,因为它需要 requireShowing=true.
无论现在是否可见,使用 FEST 查找面板的惯用方法是什么?
Assert.assertFalse(panel.getFooPanel().isVisible()); // works ok
myFrameFixture.panel(“foo”).requireNotVisible(); // fails
第二行给出了这个...
javax.swing.JPanel[name='foo']
org.fest.swing.exception.ComponentLookupException: Unable to find component
using matcher
org.fest.swing.core.NameMatcher[name='foo, type=javax.swing.JPanel, requireShowing=true].
编辑:
我使用 JComboBox 进行了类似的测试,使用的是
Jay Fichadia,但在我调用 .requireNotVisible()
之前,它似乎仍然需要该项目可见
例如单独尝试 new JComboBoxFixture(frame.robot,"grid_combo");
(没有实际的 requireNotVisible() 检查)给出 ...
Caused an ERROR
Unable to find component using matcher org.fest.swing.core.NameMatcher[name='grid_combo', type=javax.swing.JComboBox, requireShowing=true].
尽管我们在组件层次结构中有:
javax.swing.JComboBox[name='grid_combo', selectedItem='A', contents=['A', 'B'], editable=false, enabled=false, visible=false, showing=false]
您尝试过使用 new JPanelFixture(robot,"foo").requireNotVisible()
;
我刚遇到同样的问题,在看到这里没有答案后,我自己找到了解决方案。
问题是 frameFixture 默认只查找可见的组件。所以如果你想搜索不可见的组件,你必须改变这个设置。您可以使用:
myFrameFixture.robot.settings().componentLookupScope(ComponentLookupScope.ALL);