0

我有一个关于 testFx 4 的问题。有一个 GUI 对象,我想在其中将文本设置为 TextField(“#searchField”)。

它在 TestFx 3 中的工作方式如下:

//Load FXML
@Override
protected Parent getRootNode() {
Parent parent = null;

try {
    FXMLLoader loader = new FXMLLoader(); 
    loader.setResources(ResourceBundle.getBundle(ENTITIES_FIELDS_BUNDLE_PATH, Locale.GERMANY));            
    parent = loader.load(this.getClass().getClassLoader().getResource(SHOW_ALL_LAYOUT_PATH).openStream()); 
} catch (IOException ex) {}

return parent;
}

//Set text into Field and check it's there
@Test
public void setBothnamesAndCheckEnabledSearchButton() {
    TextField searchField = find("#searchField");
    searchField.setText("new text");
    verifyThat("#searchField", hasText("new text"));     
}

所以,它工作正常,一切都很好。

TestFx 4 中 100% 相同的情况:

@Override
public void start(Stage stage) throws Exception {
    try {
        FXMLLoader loader = new FXMLLoader(); 
        loader.setResources(ResourceBundle.getBundle(ENTITIES_FIELDS_BUNDLE_PATH, Locale.GERMANY));            
        AnchorPane pane  = (AnchorPane)loader.load(this.getClass().getClassLoader().getResource(SHOW_ALL_LAYOUT_PATH).openStream()); 

        Scene scene = new Scene(pane);
        stage.setScene(scene);
    } catch (IOException ex) {}
}

@Test
public void setBothnamesAndCheckEnabledSearchButton() {
    clickOn("#searchField").write("new text");
    verifyThat("#searchField", hasText("new text"));         
}

我总是“FxRobotException:查询“#searchField”没有返回节点。所以他没有“看到”同一个TextField......

我做错了什么?我确定这是我看不到的非常愚蠢的东西......有人可以帮我吗?谢谢!

4

1 回答 1

1

所以我终于找到了答案:我应该在覆盖方法stage.show()结束时调用。start()testFX 没有找到任何不可见的组件...

于 2017-02-28T14:58:34.683 回答