我在这里挠头试图让我的TestFX机器人单击Menu
,然后单击MenuItem
。
上面的类都不是从Node
派生的,所以我不能使用fxRobot.clickOn(Node node)
。
还有其他人对如何做到这一点有想法吗?除了简单地使用TextMatcher之外,它在整个范围内进行搜索。
带有菜单的MenuBar示例:
<MenuBar fx:id="mainMenuBar">
<menus>
<Menu mnemonicParsing="false" style="-fx-font-weight: bold;" text="MainMenu">
<items>
<MenuItem mnemonicParsing="false" style="-fx-font-weight: normal;" text="About" />
<MenuItem mnemonicParsing="false" style="-fx-font-weight: normal;" text="Exit" />
</items>
</Menu>
我将如何实现机器人单击顶部的
Menu
(最好是菜单的可见文本)和里面的menuItem(最好是通过可视文本选择)ChoiceBox的示例:
<ChoiceBox fx:id="myChoices" />
它的项目是从我的控制器动态填充的:
@FXML private ChoiceBox myChoices;
@FXML
public void initialize() {
List<String> items = ItemsRepo.getItems();
myChoices.setItems(FXCollections.observableArrayList(items))
}
我可以先通过
fx:id
单击choiceBox。但是我该如何选择其中一项?最好从项目可见文本。项目文本可能会干扰应用程序内的其他文本。因此,我想确保我单击了选择框项之一,而不是其他一些文本。问候
最佳答案
我必须在具有一些ChoiceBox输入字段的测试用例中填写一个PopUp表单。 ChoiceBox的项目在PopUp下面的场景中可见,因此无法通过其文本查找该项目(机器人通常单击另一次出现的文本)。我通过下面的FxRobotInterface实现了此目的。
clickOn("#choiceBox");
type(KeyCode.DOWN);
type(KeyCode.ENTER);
这样,ChoiceBox的第一项被选中。您无法完全控制使用此解决方案选择的项目,因为这些项目可能会更改,但是它适用于我的情况。
关于java - TestFX 4从ChoiceBox/菜单中选择一个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39034306/