获取外部Java应用程序的BackgroundColor/ForegroundColor

获取外部Java应用程序的BackgroundColor/ForegroundColor,java,swing,automation,ranorex,java-access-bridge,Java,Swing,Automation,Ranorex,Java Access Bridge,我正在编写自动化测试脚本,用于检查Java Swing框架运行的目标应用程序。 它使用Java访问桥库来检测目标应用程序中的元素。但是,此库只能获取目标元素的名称/角色/位置/状态,不支持获取其他属性。 下面是使用Access桥资源管理器工具(使用Java Access桥库)检测元素的示例: 然而,当我尝试使用Ranorex自动化测试工具时,它能够获得许多属性,如背景色、前景色。。。 在查看Ranorex官方网站时,仅说明其使用了一些仪器技术: 有人知道如何像Ranorex那样获得这些财产吗

我正在编写自动化测试脚本,用于检查Java Swing框架运行的目标应用程序。
它使用Java访问桥库来检测目标应用程序中的元素。但是,此库只能获取目标元素的名称/角色/位置/状态,不支持获取其他属性。

下面是使用Access桥资源管理器工具(使用Java Access桥库)检测元素的示例:

然而,当我尝试使用Ranorex自动化测试工具时,它能够获得许多属性,如背景色、前景色。。。 在查看Ranorex官方网站时,仅说明其使用了一些仪器技术:

有人知道如何像Ranorex那样获得这些财产吗?
它可以使用什么技术/库来获取元素属性?

我想它使用Win32钩子API,但不确定是否正确。

它只是一步一步地读取Java字节码。可能尤其是众所周知的GUI部件。Java字节码是“透明的”,可以很容易地进行反向工程。这可能有助于您使用哪种语言或技术编写测试自动化脚本?测试所谓的“外部应用程序”背后的基本原理是什么?您不能通过从JUnit调用其Java方法然后直接检查Swing对象来测试它吗?另一方面:我并不惊讶您没有通过Java访问桥获得颜色信息。假设你是盲人,想要一个可访问的GUI。你是否对按钮或背景色感兴趣,或者更确切地说,对这些按钮的功能感兴趣?JUnit只是一个名称。您可以使用它进行任何类型的测试,而不仅仅是单元测试,尽管名称不同。应用程序是打包的,那又怎样?它仍然是一个Java应用程序,因此您可能可以直接使用它的API,而不是使用不适当的桥接技术,这使得很难区分工具中的问题和应用程序中的问题,从而让您忙于解决它们。很抱歉提出这个问题,但这只是一个想法。你也可以使用Java代理或JVM调试接口,或者像Ranorex这样的专用工具。如果测试人员没有使用最好的工具来赚钱(如果你幸运的话,免费),通常公司不是在省钱而是在烧钱。不过,我现在将保持沉默,以便让您重新使用工具而不是自动化测试。祝你好运真的,我是认真的。没有冒犯的意思,我真的希望你能解决这个问题。