1

我使用TestFX框架来测试我的 javaFX 应用程序。我这样测试我的应用程序:

@Test
public void shouldClickOnDeletMarkerButton() {
    FxRobot bot = new FxRobot();
    bot.robotContext();
    bot.clickOn("#deleteMarkerButton");
    bot.clickOn("javafx.scene.control.Alert.CANCEL_BUTTON"); //This doesn't work.
}

我希望他点击JavaFX Alert Dialogs的 OK 按钮,但我没有找到 fx:id。

JavaFX Alert OK Button 的 fx:id 是什么?

编辑:我解决了我的问题,FxRobot 知道“阅读”,这就足够了:

@Test
public void shouldClickOnDeletMarkerButtonWhenAnyMarkerAsBeenCreated() {
    bot.robotContext();
    bot.clickOn("#deleteMarkerButton");
    bot.clickOn("OK"); //Target text / Target Button / ...
}
4

2 回答 2

3

@KaluNight,您的解决方案还可以,但仅适用于英语本地化。

最好使用 id。IndeedAlert没有fx:id为自己的按钮定义,但我们可以做到:

Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK);
okButton.setId("my custom id");
于 2017-12-10T06:55:54.857 回答
1
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<BorderPane fx:controller="sample.Controller" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <Button text="Click me!" fx:id="button" onAction="#clickAction" BorderPane.alignment="CENTER"/>
</BorderPane>

为元素赋值fx:id,如 Button 控件的代码所示,会在文档的命名空间中创建一个变量,您可以从代码的其他地方引用该变量。

于 2017-11-13T08:55:29.290 回答