Legacy | Set device location

  • Command: location

  • Subcommand: set

  • Supported Platforms: Native (legacy), UFT (legacy), Selenium, Appium

    All commands must be executed using the same framework. Sharing the execution ID between different frameworks is not possible. This means that if you work with a Selenium/Appium driver, you need to call the commands using the Selenium/Appium driver (or, in the case of Reporting commands, through the Reporting SDK that works with the driver) and not as part of a UFT test or another framework.

  • Supported OS: Android, iOS

Description

Sets the device location. This enables testing a location-aware app that uses location services without moving the device from place to place to generate location data.

The location is supplied as one of the following: Full (street, city, state, country) or partial address OR Latitude, Longitude pair

To set the location via address: This requires using Google Geocoding. For example: 1600 Amphitheatre Parkway, Mountain View, CA.

To set the location via GPS: Many applications supply GPS coordinates when given an address following Google's Geocoding format. For example: Google Maps yields the GPS coordinates 43.642752 (latitude), -79.386981 (longitude) - decimal degrees - for the address "1600 Amphitheatre Parkway, Mountain View, CA."

When you obtain GPS coordinates, you can set the device location via the Set device location command.

Setting device location via address

Setting location via address requires using Google Geocoding. For example: 1600 Amphitheatre Parkway, Mountain View, CA.

Setting device location via coordinates

Many applications supply GPS coordinates when given a Google Geocoding formatted address. For example, Google Maps yields the GPS coordinates 43.642752 (latitude), -79.386981 (longitude) - decimal degrees - for the address "1600 Amphitheatre Parkway, Mountain View, CA" .

Once these GPS coordinates are obtained, you can set the device location via the Set device location command.

To obtain Google coordinates for an address, use Google Maps.

Troubleshooting

If the Set device location command does not work:

  • Confirm that the Reset Location parameter is set to false
  • Open, close, and reopen the application in which the location is set.
Caution: On iOS devices, do not click the Reset Location & Privacy, or the device will become unavailable until addressed by the Perfecto device team.

Android Troubleshooting

Verify the following settings in the device:

  1. Allow mock locations:

    Go to Settings > Developer options > Allow mock locations.

    (Android 6: Enable mock locations)

  2. High accuracy:

    Go to Setting > Location > Mode > High accuracy.

Parameters

Name Value Default Description
deviceID*     The device for this command.
address    

The address location to set. Format: Google Geocoding.

Example: 1600 Amphitheatre Parkway, Mountain View, CA

coordinates    

The latitude and longitude coordinate of the device location to set.

Example: 43.642659,-79.387050

* Mandatory parameter

Request & Response

Copy

Request

https://mycloudlab.perfectomobile.com/services/executions/john@perfectomobile.com_controller_16-11-09_11_30_56_337?operation=command&securityToken=<your_token>&command=location&subcommand=set&param.deviceId=9A72917FF7B5109B54FD96C4C56A6C128E23F018&param.address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA
Copy

JSON response

{
  "executionId": "john@perfectomobile.com_controller_16-11-09_11_30_56_337",
  "reason": "Success",
  "timer.elapsed": "1125",
  "testGridReportUrl": "https://mycloudlab.reporting-stg.perfectomobile.com?externalId[0]=john@perfectomobile.com_controller_16-11-09_11_30_56_337",
  "timer.ux": "0",
  "singleTestReportUrl": "https://mycloudlab.perfectomobile.com/nexperience/singletest/report/?reportRepositoryKey=PRIVATE:controller/161109/controller_16-11-09_11_30_56_337.xml&ownerId=john@perfectomobile.com&sharingCode=8b1b44f9-986b-4a7a-8214-b9171d6a30a1",
  "description": "Success",
  "timer.system": "1125",
  "reportKey": "PRIVATE:controller/161109/controller_16-11-09_11_30_56_337.xml",
  "completed": "true",
  "flowEndCode": "SUCCEEDED",
  "timer.device": "0"}