# Testing locations in iOS 10 & XCode 8

**URL:** <https://discuss.appium.io/t/testing-locations-in-ios-10-xcode-8/14149>\
**Category:** Support\
**Created:** [January 10, 2017, 8:04pm UTC](https://discuss.appium.io/t/testing-locations-in-ios-10-xcode-8/14149 "2017-01-10T20:04:02Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![Aleksei](https://discuss.appium.io/user_avatar/discuss.appium.io/aleksei/32/6267_2.png) [@Aleksei](https://discuss.appium.io/u/Aleksei)\
**Post date:** [January 11, 2017, 10:41am UTC](https://discuss.appium.io/t/testing-locations-in-ios-10-xcode-8/14149/4 "2017-01-11T10:41:54Z")

</div>

try:

**General way**

```auto
Location tallinn_airport_loc = new Location(59.416343, 24.802423, 0);
((IOSDriver) driver).setLocation(tallinn_airport_loc);

```

**Simulator hard way with osascript (did not check long time but worked 1year ago)**

```auto
public void setLocationWithEmulator(Location loc) {
        try {
            String[] cmd = {"osascript", "-e",
                    "on menu_click(mList)\n" +
                    " local appName, topMenu, r\n" +
                    "\n" +
                    " -- Validate our input\n" +
                    " if mList's length < 3 then error \"Menu list is not long enough\"\n" +
                    "\n" +
                    " -- Set these variables for clarity and brevity later on\n" +
                    " set {appName, topMenu} to (items 1 through 2 of mList)\n" +
                    " set r to (items 3 through (mList's length) of mList)\n" +
                    "\n" +
                    " -- This overly-long line calls the menu_recurse function with\n" +
                    " -- two arguments: r, and a reference to the top-level menu\n" +
                    " tell application \"System Events\" to my menu_click_recurse(r, ((process appName)'s ¬\n" +
                    " (menu bar 1)'s (menu bar item topMenu)'s (menu topMenu)))\n" +
                    "end menu_click\n" +
                    "\n" +
                    "on menu_click_recurse(mList, parentObject)\n" +
                    " local f, r\n" +
                    "\n" +
                    " -- `f` = first item, `r` = rest of items\n" +
                    " set f to item 1 of mList\n" +
                    " if mList's length > 1 then set r to (items 2 through (mList's length) of mList)\n" +
                    "\n" +
                    " -- either actually click the menu item, or recurse again\n" +
                    " tell application \"System Events\"\n" +
                    " if mList's length is 1 then\n" +
                    " click parentObject's menu item f\n" +
                    " else\n" +
                    " my menu_click_recurse(r, (parentObject's (menu item f)'s (menu f)))\n" +
                    " end if\n" +
                    " end tell\n" +
                    "end menu_click_recurse\n" +
                    "\n" +
                    "application \""+simulatorAppName()+"\" activate \n" +
                    "delay 0.2\n" +
                    "menu_click({\""+simulatorAppName()+"\",\"Debug\", \"Location\", \"None\"})\n" +
                    "\n" +
                    "delay 0.2\n" +
                    "menu_click({\""+simulatorAppName()+"\",\"Debug\", \"Location\", \"Custom Location…\"})\n" +
                    "\n" +
                    "delay 0.2\n" +
                    "tell application \"System Events\"\n" +
                    " tell process \""+simulatorAppName()+"\"\n" +
                    " set value of text field 1 of window \"Custom Location\" to \""+loc.getLatitude()+"\"\n" +
                    " set value of text field 2 of window \"Custom Location\" to \""+loc.getLongitude()+"\"\n" +
                    " click UI Element \"OK\" of window \"Custom Location\"\n" +
                    " end tell\n" +
                    "end tell"
            };
            Process process = Runtime.getRuntime().exec(cmd);
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(process.getErrorStream()));
            String lsString;
            while ((lsString = bufferedReader.readLine()) != null) {
                System.out.println(lsString);
            }
            try{Thread.sleep(10000);}catch (Exception e1){}
        } catch (Exception e) {}
    }
    public String simulatorAppName() {
        return "Simulator";
    }

```

---

_[View the full topic](https://discuss.appium.io/t/testing-locations-in-ios-10-xcode-8/14149)._
