0

我们使用 Java Swing 开发了一个基于 Windows 的桌面应用程序,并使用 Java 8 中可用的 javapackager 构建了它的 exe。

现在我们正在尝试使用空手道机器人对其进行自动化测试,但机器人无法检测应用程序 GUI 上的字段。为了进一步挖掘,我们安装了空手道社区建议的 AccessibilityInsights,以弄清楚如何访问 GUI 上的元素,但似乎我们的应用程序没有在其中被删除。请参阅随附的屏幕截图。

在此处输入图像描述

有人可以帮助我们如何修复应用程序吗?

Java Accessibility Bridge 会在这里提供帮助吗?根据文档https://docs.oracle.com/en/java/javase/11/access/java-accessibility-guide.pdf,当应用程序需要可用于 Windows 辅助技术时,它需要实现 Java 可访问性 API。

编辑 1:根据https://docs.oracle.com/javase/tutorial/uiswing/misc/access.html,“因为对 Accessibility API 的支持内置于 Swing 组件中,所以您的 Swing 程序可能与辅助技术,即使你没有做任何特别的事情。”

4

1 回答 1

0

阿什——

多年来,基于 Windows 的辅助技术已经多次迭代。当前的迭代自 2005 年以来就存在,称为UI 自动化。这是操作系统提供的工具(如放大镜和讲述人)所需的技术。它也是 Accessibility Insights for Windows 所需的技术。根据您的描述,它也可能是空手道机器人所需的技术。

Java Accessibility Bridge 使用了旧版本的辅助技术,操作系统提供的辅助工具不再识别该技术。一些第三方辅助工具(例如 JAWS 和 NVDA)可以识别它,但操作系统提供的辅助工具不能识别它。据我所知,Oracle 没有计划在未来支持 UI 自动化。当他们的文档说您的应用程序“运行良好”时,他们指的是依赖这些第三方工具的用户。

Accessibility Insights for Windows 有意识地决定支持UI 自动化,因为支持 2 个平台会使事情变得更加困难。我们选择使用 UI 自动化是因为它是唯一的技术:

  • 操作系统积极支持,定期添加和记录新功能。
  • 由本机 Windows 控件和最积极支持的语言框架支持。
  • 我们期望新的辅助技术工具首先实施的技术。

我很抱歉成为这方面坏消息的承担者。

DaveTryon(无障碍洞察团队)

于 2021-04-23T19:15:21.997 回答