Page tree
Skip to end of metadata
Go to start of metadata

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 SystemAutomation Infrastructure Value
iOS Devices
  • UIAutomation (devices running iOS 10-)
  • XCUITest (devices running iOS 10+)
Android Devices
  • UIAutomator1
  • UIAutomator2 (devices after v5.1)

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.