Microsoft UI Automation

Microsoft UI Automation (UI Automation) is a framework that enables you to access, identify, and manipulate UI elements of any application by providing programmatic access to these user interface elements. When testing against Windows-based applications that have implemented UI Automation provider interfaces, you can use UI Automation to improve the object recognition for the controls in these applications. In this Help, we will refer to such controls as UI Automation controls.
Note: Silk4J supports testing Windows-based applications that have implemented UI Automation on machines with Microsoft Windows 8 or later.
UI Automation provides fallback support for applications that are based on the following technologies:
  • Win32
  • WPF
  • WinForms
  • Oracle JavaFX
  • QT
  • PowerBuilder
  • Delphi
  • Microsoft Office

For example, if you cannot record a test against your application because Silk4J cannot recognize the objects in the application or because Silk4J recognizes all objects in the application as Control, you could try to enable the UI Automation support.

To enable the UI Automation support during recording, stop recording, enable the option OPT_ENABLE_UI_AUTOMATION_SUPPORT, and resume recording. For additional information, see Setting UI Automation Options.
Note: The UI Automation support overrides the standard technology-domain-specific support. When you are finished interacting with the controls that require UI Automation support, disable the UI Automation support again to resume working with standard controls.
Note: If you are testing against a Java FX application, you do not have to enable the UI Automation support, as Silk4J enables this out-of-the-box for Java FX applications.

To ensure that the methods supported for a UI Automation control cover the corresponding controls in all supported technologies, the Silk4J API supports only a subset of the methods and properties available for these controls. To call additional methods and properties that are not available in the Silk4J API for a control, use dynamic invoke.