Over the years, both the iOS and Android infrastructure have evolved to both improve their performance and add new functionality. These changes are often bundled into a new "Application Infrastructure", for example UIAutomation or XCUITest, that greatly affect the test automation activity employed to both identify application UI Elements and automating them.
The Perfecto Lab supports devices based on different application infrastructures. A particular automation script may target a particular application infrastructure, and should select a device based on this attribute. To better assist the tester, the devices expose their infrastructure in a way that the user can select a device based on this variable attribute.
Automation Infrastructure Identification
Possible values for the Automation Infrastructure attribute are:
|Operating System||Automation Infrastructure Value|
Selecting by Infrastructure - Interactive Mode
After clicking on the Launch Mobile button, the list of devices is displayed. In addition to the basic device information, for example OS, manufacturer, device-ID, there is a column titled Automation that indicates the infrastructure configured for the device.
Use the Filter field to narrow down the available device list to those devices that comply with your desired infrastructure.
Selecting by Infrastructure - Native Automation
When running a Native Automation script, use the Select device command and identify the desired infrastructure with the automationInfrastructure parameter of the command.
For iOS devices values:
- UIAutomation - devices running iOS 10-
- XCUITest - devices running iOS 10+
For Android devices values:
- UIAutomator1 - devices running Android 5-
- UIAutomator2 - devices running Android 5.1+.
Selecting by Infrastructure - Appium
The Appium driver selects the device to automate as part of the instantiation of the driver object. Identifying the device to select is based on setting the set of DesiredCapabilitiies. To select the device based on the application infrastructure, use the automationName capability.