我在这里挠头试图让我的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/

10-15 13:23