3

我有一个带有记录网格和按钮插入的应用程序。单击插入后,有一个表单,您可以在其中填写数据并单击确定以将新记录添加到网格中。单击确定后,如果任何文本字段与验证规则不匹配,则验证会触发带有错误信息的对话框。如果对话框没有 id,是否有任何可能的方法来使用 textFx 测试对话框上的文本?

4

2 回答 2

3

这是Alert基于对话框的示例:

在此处输入图像描述

在您的测试中:

alert_dialog_has_header_and_content(
    "Removing 'Almaty' location", "Are you sure to remove this record?");

在你的助手测试类中:

public void alert_dialog_has_header_and_content(final String expectedHeader, final String expectedContent) {
    final javafx.stage.Stage actualAlertDialog = getTopModalStage();
    assertNotNull(actualAlertDialog);

    final DialogPane dialogPane = (DialogPane) actualAlertDialog.getScene().getRoot();
    assertEquals(expectedHeader, dialogPane.getHeaderText());
    assertEquals(expectedContent, dialogPane.getContentText());
}

private javafx.stage.Stage getTopModalStage() {
    // Get a list of windows but ordered from top[0] to bottom[n] ones.
    // It is needed to get the first found modal window.
    final List<Window> allWindows = new ArrayList<>(robot.robotContext().getWindowFinder().listWindows());
    Collections.reverse(allWindows);

    return (javafx.stage.Stage) allWindows
            .stream()
            .filter(window -> window instanceof javafx.stage.Stage)
            .filter(window -> ((javafx.stage.Stage) window).getModality() == Modality.APPLICATION_MODAL)
            .findFirst()
            .orElse(null);
}
于 2018-02-07T02:07:39.387 回答
0

我知道这个问题有点老了,可能已经解决了,但是出于文档目的,以防其他人寻找类似问题的修复程序,我dialog.getDialogPane()在 Dialog 文档中看到,这将有助于在窗格中查找特定控件。在@plaidshirt 查询中,我们可以通过以下方式检索按钮和输入字段:

dialog.getDialogPane().lookupAll()

然后将其缩小到按钮和输入字段。

于 2020-08-02T17:14:39.397 回答