应用测试 - "Sdk 9.3 was not in the list of simctl sdks"

Appium test - "Sdk 9.3 was not in the list of simctl sdks"

我是一个 linux devops 人,被迫做苹果的事情,我对所有事情都很迷茫......

我正在尝试 运行 一个 iPad 应用程序的测试套件,但我不断收到此错误:“[XCUITest] 错误:Sdk '9.3' 不在 simctl sdks 列表中”。我知道这是一个缺失的依赖项,我可能需要安装这个 Sdk 9.3,但我真的不知道该怎么做,而且 google 根本没有帮助。

这是日志跟踪:

[11:01:58][Step 2/3] [Appium] Creating new XCUITestDriver session
[11:01:58][Step 2/3] [Appium] Capabilities:
[11:01:58][Step 2/3] [Appium]   app: '/Volumes/BuildData/teamcity/buildAgent/work/c715626955d98290/.qa_atom/REDACTED.app'
[11:01:58][Step 2/3] [Appium]   orientation: 'LANDSCAPE'
[11:01:58][Step 2/3] [Appium]   noReset: false
[11:01:58][Step 2/3] [Appium]   newCommandTimeout: 9000
[11:01:58][Step 2/3] [Appium]   realDeviceLogger: '/Users/REDACTED/projects'
[11:01:58][Step 2/3] [Appium]   platformVersion: '9.3'
[11:01:58][Step 2/3] [Appium]   automationName: 'XCUITEST'
[11:01:58][Step 2/3] [Appium]   platformName: 'iOS'
[11:01:58][Step 2/3] [Appium]   deviceName: 'iPad Air 2'
[11:01:58][Step 2/3] [Appium]   fullReset: false
[11:01:58][Step 2/3] [Appium]   nativeWebTap: true
[11:01:58][Step 2/3] [debug] [XCUITest] XCUITestDriver version: 2.3.0
[11:01:58][Step 2/3] [BaseDriver] Session created with session id: e9d0a596-854e-4dbd-997c-5d12d517e4c8
[11:01:58][Step 2/3] [debug] [XCUITest] Xcode version set to '8.0'
[11:01:59][Step 2/3] [debug] [XCUITest] iOS SDK Version set to '10.0'
[11:02:00][Step 2/3] [XCUITest] Error: Sdk '9.3' was not in list of simctl sdks
[11:02:00][Step 2/3]     at getDevices$ (lib/simctl.js:179:13)
[11:02:00][Step 2/3]     at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
[11:02:00][Step 2/3]     at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
[11:02:00][Step 2/3]     at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
[11:02:00][Step 2/3]     at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[11:02:00][Step 2/3]     at run (/usr/local/lib/node_modules/appium/node_modules/core-js/library/modules/es6.promise.js:108:47)
[11:02:00][Step 2/3]     at /usr/local/lib/node_modules/appium/node_modules/core-js/library/modules/es6.promise.js:119:28
[11:02:00][Step 2/3]     at flush (/usr/local/lib/node_modules/appium/node_modules/core-js/library/modules/$.microtask.js:19:5)
[11:02:00][Step 2/3]     at nextTickCallbackWith0Args (node.js:452:9)
[11:02:00][Step 2/3]     at process._tickCallback (node.js:381:13)
[11:02:00][Step 2/3]  [Error: Sdk '9.3' was not in list of simctl sdks]
[11:02:00][Step 2/3] [debug] [XCUITest] Running iOS simulator reset flow
[11:02:00][Step 2/3] [MJSONWP] Encountered internal error running command: Error: Sdk '9.3' was not in list of simctl sdks
[11:02:00][Step 2/3]     at getDevices$ (lib/simctl.js:179:13)
[11:02:00][Step 2/3]     at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
[11:02:00][Step 2/3]     at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
[11:02:00][Step 2/3]     at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
[11:02:00][Step 2/3]     at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[11:02:00][Step 2/3]     at run (/usr/local/lib/node_modules/appium/node_modules/core-js/library/modules/es6.promise.js:108:47)
[11:02:00][Step 2/3]     at /usr/local/lib/node_modules/appium/node_modules/core-js/library/modules/es6.promise.js:119:28
[11:02:00][Step 2/3]     at flush (/usr/local/lib/node_modules/appium/node_modules/core-js/library/modules/$.microtask.js:19:5)
[11:02:00][Step 2/3]     at nextTickCallbackWith0Args (node.js:452:9)
[11:02:00][Step 2/3]     at process._tickCallback (node.js:381:13)

我觉得很简单,打开Xcode,然后跳进偏好设置,用老OS下载模拟器。 Xcode 8 与 ios 10 有关。Xcode 7.3.x 与 ios 9.3

有关

您可能还需要检查您的 appium 配置,以确保您不需要告诉它使用 10.0 而不是 9.3。一个简单的 grep 你的回购协议应该可以帮助你找到

另一个解决方案是从 https://developer.apple.com/download/ 的 Apple 下载 xcode 7.3.1 然后,一旦你安装它,请确保你从你的终端执行 xcode select,如:

xcode-select -switch /path/to/new/Xcode.app/Contents/Developer/

那么当你重新 运行 你的测试时它应该会找到旧版本

转到 Xcode>>首选项>>组件>>iOS 10 模拟器(或任何所需版本)。现在点击 'Check and install'。这会将选定的 iOS 版本添加到您的 simctl SDK 列表中。