Can't run inspector tool appium 1.6.0-beta1 Xcode 8.0

If I run tests on application UICatalog from appium tutorial everything is working properly and test is executed on Simulator. However I am unable to run Appium inspector tool to inspect elements (trying to inspect same application UICatalog).
When I try to run inspector tool I can see following error in the log:

Details: Appium’s IosDriver does not support xcode version 8.0. Apple has deprecated UIAutomation. Use the “XCUITest” automationName capability instead.

But I am not able to force inspector tool to use XCUITest instead of UIAutomation.
Is there any way how to handle this?

OS:
macOS Sierra 10.12 (16A323)

Xcode:
Version 8.0 (8A218a)

Iphone Simulator:
iPhone6 - iOS 9.3 (13E233)

Appium version:
1.6.0-beta1

Test setup:
I am using same setup like in appium tutorial for iOS

This is my setup method (little bit adjusted)

public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(“appium-version”, “1.1.0”);
capabilities.setCapability(“platformVersion”, “9.3”);
capabilities.setCapability(“platformName”, “ios”);
capabilities.setCapability(“deviceName”, “iPhone Simulator”);
capabilities.setCapability(“automationName”, “XCUITest”); //use XCUITest required by Xcode 8.0

    // Set job name on Sauce Labs
    capabilities.setCapability("name", "Java iOS tutorial ");
    String userDir = System.getProperty("user.dir");
    String localApp = "UICatalog6.1.app.zip";
    String appPath = Paths.get(userDir, localApp).toAbsolutePath().toString();
    capabilities.setCapability("app", appPath);
    driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    String sessionId = driver.getSessionId().toString();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    int timeoutInSeconds = 60;
    // must wait at least 60 seconds for running on Sauce.
    // waiting for 30 seconds works locally however it fails on Sauce.
    driverWait = new WebDriverWait(driver, timeoutInSeconds);
   
}

Appium Log:

[Appium] Welcome to Appium v1.6.0-beta1

[Appium] Non-default server args:

[Appium]   debugLogSpacing: true
[Appium]   platformName: 'iOS'
[Appium]   platformVersion: '9.3'
[Appium]   automationName: 'XCUITest'
[Appium]   deviceName: 'iPhone 6'
[Appium]   app: 'com.example.apple-samplecode.UICatalog'
[Appium]   noReset: true

[Appium]   nativeInstrumentsLib: true
[Appium] Deprecated server args:
[Appium]   --platform-name => --default-capabilities '{"platformName":"iOS"}'
[Appium]   --platform-version => --default-capabilities '{"platformVersion":"9.3"}'
[Appium]   --automation-name => --default-capabilities '{"automationName":"XCUITest"}'
[Appium]   --device-name => --default-capabilities '{"deviceName":"iPhone 6"}'
[Appium]   --app => --default-capabilities '{"app":"com.example.apple-samplecode.UICatalog"}'
[Appium]   --no-reset => --default-capabilities '{"noReset":true}'
[Appium]   --native-instruments-lib => --default-capabilities '{"nativeInstrumentsLib":true}'
[Appium] Default capabilities, which will be added to each request unless overridden by desired capabilities:

[Appium]   platformName: 'iOS'

[Appium]   platformVersion: '9.3'
[Appium]   automationName: 'XCUITest'
[Appium]   deviceName: 'iPhone 6'
[Appium]   app: 'com.example.apple-samplecode.UICatalog'
[Appium]   noReset: true
[Appium]   nativeInstrumentsLib: true

[Appium] Appium REST http interface listener started on 0.0.0.0:4723

[HTTP] --> GET /wd/hub/status {}

[MJSONWP] Calling AppiumDriver.getSessions() with args: []

[MJSONWP] Responding to client with driver.getSessions() result: []

[HTTP] <-- GET /wd/hub/sessions 200 2 ms - 40 

[HTTP] --> POST /wd/hub/session {"desiredCapabilities":{"platformName":"iOS","platformVersion":"9.3","newCommandTimeout":"7200","automationName":"Appium","bundleId":"com.example.apple-samplecode.UICatalog","deviceName":"iPhone 6"}}

[MJSONWP] Calling AppiumDriver.createSession() with args: [{"platformName":"iOS","pla...

[Appium] Creating new IosDriver session
[Appium] Capabilities:
[Appium]   platformName: 'iOS'
[Appium]   platformVersion: '9.3'
[Appium]   newCommandTimeout: '7200'
[Appium]   automationName: 'Appium'
[Appium]   bundleId: 'com.example.apple-samplecode.UICatalog'
[Appium]   deviceName: 'iPhone 6'
[Appium]   app: 'com.example.apple-samplecode.UICatalog'
[Appium]   noReset: true
[Appium]   nativeInstrumentsLib: true
[BaseDriver] Capability 'newCommandTimeout' changed from string ('7200') to integer (7200). This may cause unexpected behavior
[BaseDriver] Session created with session id: 3aefc986-6d24-4f3c-8718-7438136bdfac

[debug] [iOS] Xcode version set to 8.0

[iOS] SessionNotCreatedError: A new session could not be created. Details: Appium's IosDriver does not support xcode version 8.0. Apple has deprecated UIAutomation. Use the "XCUITest" automationName capability instead.
    at IosDriver.createSession$ (lib/driver.js:120:28)
    at tryCatch (/Applications/Appium.app/Contents/Resources/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/node_modules/babel-runtime/regenerator/runtime.js:136:37)
 { SessionNotCreatedError: A new session could not be created. Details: Appium's IosDriver does not support xcode version 8.0. Apple has deprecated UIAutomation. Use the "XCUITest" automationName capability instead.
    at IosDriver.createSession$ (lib/driver.js:120:28)
    at tryCatch (/Applications/Appium.app/Contents/Resources/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/node_modules/babel-runtime/regenerator/runtime.js:136:37) jsonwpCode: 33 }

In Xcode 8.+, instruments automation template have been removed from “Developer Tools > Instruments”. I have kept Xcode 7.3.+ as well. To build app on iOS 10 and Swift3 I use X-code 8.+ and to run test set Xcode 7.3.+ as default Xcode from command line. I have moved Xcode 8 into xcode8 folder in Application

To set xcode 7.3.+ as default : 
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/

To set xcode8 as default:
sudo xcode-select -s /Applications/xcode8/Xcode-8.app/Contents/Developer/
1 Like

Thanks for your answer. I will try it out.

Has anybody got it working? The inspector does not come up with Xcode 8 and appium 1.6.0. For inspector to work, the only option is to go back to Xcode 7.2? I did not try that path yet.

So far I haven’t found any solution how to use inspector with Xcode 8 and appium 1.6.0.
But I have used approach suggested by @Suman_Bala (With Xcode 7.3) and it is working.

Hi all,

Currently, appium 1.6 is not available in GUI to inspect the elements, but there is workaround you can get the elements.

Try this :

There is a great help with this…
It is working nicely :slight_smile: