在对话框中与控件的JemmyFX交互在Linux上间歇性地失败** **

时间:2016-09-19 23:08:51

标签: javafx jemmyfx

我的JavaFX应用程序创建了一个对话框作为第二个self.acQuery = HKAnchoredObjectQuery(type: sampleType, predicate: pred, anchor: self.acAnchor, limit: Int(HKObjectQueryNoLimit), resultsHandler: { (query, newSamples, deletedSamples, newAnchor, error) in self.updateHeartRates(newSamples: newSamples, deletedSamples: deletedSamples, newAnchor: newAnchor, error: error); }) ,我的JemmyFX测试间歇性地无法单击该对话框中的控件。

在我的Ubuntu Linux工作站上以大约10%的速率发生故障,但这在Windows上完美运行。

失败的近端原因似乎是JemmyFX在错误的地方点击鼠标。我挖了这个,坏点击坐标似乎是由来自拥有Stage的{​​{1}}对象的不正确的窗口坐标引起的。

因此,我创建了一个演示问题的最小应用程序和测试,它实际上以比实际应用程序(约50%)更高的更高速率失败。

以下是申请表:

Window

以下是测试:

Scene

我真的不想在Windows上开发我的测试。

我最近在JebuyFX(8,8u,8u-dev)中编译并在Ubuntu 14.04上的Java8u101上运行时观察了所有这些。

1 个答案:

答案 0 :(得分:1)

似乎它是JavaFX(https://bugs.openjdk.java.net/browse/JDK-8166414)中的一个错误。它在JemmyFX方面无法解决。

P.S。在可观察的时间内修复它是不太可能的。所以我可能只建议使用一些丑陋的解决方法,比如在收到错误的对话框之后恢复正确的对话框坐标(例如,在第二次调用坐标属性监听器时通过附加的centerOnScreen())。