我正在使用https://github.com/TestFX/TestFX进行 javafx 客户端的 gui 测试。通过 testfx 查询,我得到了组合框,但无法获取其文本进行验证。组合框显示其文本由转换器和给定资源包解析的枚举值。组合框的场景图如下所示:
javafx.scene.control.ComboBox
javafx.scene.layout.StackPane:arrow-button
javafx.scene.layout.Region:arrow
com.sun.javafx.scene.control.skin.ComboBoxListViewSkin$4$1:null
com.sun.javafx.scene.control.skin.LabeledText:null
comboBox.getValue()
只给我枚举值而不是文本(我可以验证枚举值,但因为它是一个 gui 测试,所以应该验证显示的文本)。通过尝试,我发现comboBox.getChildrenUnmodifiable().toString()
打印
[StackPane[id=arrow-button, styleClass=arrow-button], ComboBoxListViewSkin$5[id=list-view, styleClass=list-view], ComboBoxListViewSkin$4$1@4f65f1d7[styleClass=cell indexed-cell list-cell]'StringOfInterest']
最后的字符串 'StringOfInterest' 正是我需要的,但不清楚它来自哪里。通过查看 javafx 的源代码,似乎正在使用 Node#toString。但是,尚不清楚最后一部分('StringOfInterest')来自何处。我试图获取 ComboBox 的所有子项的文本,但有问题的字符串不是其中的一部分。
如何提取字符串?