Search Patterns
To search for objects identified via UI Automation, you use search patterns of the UIAPattern
type.
.NET: The pattern belongs to the SmartBear.TestLeft.TestObjects.UIAutomation
namespace.
Java: The pattern belongs to the com.smartbear.testleft.testobjects
package.
This pattern uses the following properties:
Property | Type | Description |
---|---|---|
ClassName |
String | The object’s class name. This is the value of the ClassName UI Automation property (UIA_ClassNamePropertyId ) for that object. |
Enabled |
Boolean | Specifies whether the object is enabled or disabled. Disabled objects are usually shown grayed out. |
FrameworkId |
String | The name of the underlying UI framework. For example, Win32, WinForm, WPF, DirectUI. This is the value of the UI Automation property FrameworkId (UIA_FrameworkIdPropertyId ) for that object. |
LocalizedControlType |
String | The object type in lowercase. For example, button, combo box, data grid. This is the value of the LocalizedControlType UI Automation property (UIA_LocalizedControlTypePropertyId ) for that object. |
ObjectGroupIndex |
Integer | The object’s index (1-based) among sibling objects with the same ObjectIdentifier . |
ObjectIdentifier |
String or Integer |
The object identifier is the value of one of the following UI Automation properties for that object, in order of preference:
|
Visible |
Boolean | Specifies whether the object is visible in the application. Objects that are out of screen bounds or overlapped by other objects are still considered visible. |
You can use any combination of these properties in your UI Automation search patterns.
Example
C#
IControl link = Driver.Find<IProcess>(new ProcessPattern()
{
ProcessName = "explorer"
}).Find<ITopLevelWindow>(new WindowPattern()
{
WndClass = "CabinetWClass",
WndCaption = "Programs and Features"
}).Find<IControl>(new UIAPattern()
{
FrameworkId = "DirectUI",
LocalizedControlType = "pane",
ObjectIdentifier = "CPNavPanel"
}, 6).Find<IControl>(new UIAPattern()
{
ClassName = "ControlPanelLink",
ObjectIdentifier = "Install_a_program_from_the_network"
});
Visual Basic .NET
Dim link As IControl = Driver.Find(Of IProcess)(New ProcessPattern() With {
.ProcessName = "explorer"
}).Find(Of ITopLevelWindow)(new WindowPattern() With {
.WndClass = "CabinetWClass",
.WndCaption = "Programs and Features"
}).Find(Of IControl)(new UIAPattern() With {
.FrameworkId = "DirectUI",
.LocalizedControlType = "pane",
.ObjectIdentifier = "CPNavPanel"
}, 6).Find(Of IControl)(new UIAPattern() With {
.ClassName = "ControlPanelLink",
.ObjectIdentifier = "Install_a_program_from_the_network"
})
Java
Control link = driver.find(TestProcess.class, new ProcessPattern() {{
ProcessName = "explorer";
}}).find(TopLevelWindow.class, new WindowPattern() {{
WndClass = "CabinetWClass";
WndCaption = "Programs and Features";
}}).find(Control.class, new UIAPattern() {{
FrameworkId = "DirectUI";
LocalizedControlType = "pane";
ObjectIdentifier = "CPNavPanel";
}}, 6).find(Control.class, new UIAPattern() {{
ClassName = "ControlPanelLink";
ObjectIdentifier = "Install_a_program_from_the_network";
}});
Custom Properties
You can also specify custom properties by using the .add("propertyname", value)
method of the pattern object. See Using Custom Properties in Search Patterns.