找不到 automationName 'XCUITest' 和 platformName 'iOS' 的驱动程序。请检查您想要的功能

Could not find a driver for automationName 'XCUITest' and platformName 'iOS'. Please check your desired capabilities

我已经搜索了很多有关此错误的信息。我已经做了很多教程,但没有任何效果:

我已经创建了一个测试 iOS 项目,似乎我已经安​​装了所有东西,可以在 iOS

中开始使用 appium
bacelar@Brunos-MacBook-Pro-2 Test % appium-doctor --ios                
info AppiumDoctor Appium Doctor v.1.15.1
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor  ✔ Node version is 12.13.1
info AppiumDoctor  ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer
info AppiumDoctor  ✔ Xcode Command Line Tools are installed in: /Applications/Xcode.app/Contents/Developer
info AppiumDoctor  ✔ DevToolsSecurity is enabled.
info AppiumDoctor  ✔ The Authorization DB is set up properly.
info AppiumDoctor  ✔ Carthage was found at: /usr/local/bin/carthage. Installed version is: 0.34.0
info AppiumDoctor  ✔ HOME is set to: /Users/bacelar
info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed. ###

但是当我在 appium 桌面上启动检查器会话时,出现以下错误:

Encountered internal error running command: Error: Could not find a driver for automationName 'XCUITest' and platformName 'iOS'. Please check your desired capabilities.

这是 appium 日志:

[HTTP] {"desiredCapabilities":{"app":"/Users/bacelar/Curatio/automatedTests/iOS/test_project/Test/build/Release-iphonesimulator/Test.app","automationName":"XCUITest","deviceName":"iphone 11","noReset":true,"platformName":"iOS","platformVersion":"13.4","newCommandTimeout":0,"connectHardwareKeyboard":true}}
[MJSONWP] Calling AppiumDriver.createSession() with args: [{"app":"/Users/bacelar/Curatio/automatedTests/iOS/test_project/Test/build/Release-iphonesimulator/Test.app","automationName":"XCUITest","deviceName":"iphone 11","noReset":true,"platformName":"iOS","platformVersion":"13.4","newCommandTimeout":0,"connectHardwareKeyboard":true},null,null]
[BaseDriver] Event 'newSessionRequested' logged at 1588813098829 (17:58:18 GMT-0700 (PDT))
[BaseDriver] Event 'newSessionStarted' logged at 1588813098836 (17:58:18 GMT-0700 (PDT))
[MJSONWP] Encountered internal error running command: Error: Could not find a driver for automationName 'XCUITest' and platformName 'iOS'. Please check your desired capabilities.
[MJSONWP]     at AppiumDriver.getDriverAndVersionForCaps (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/lib/appium.js:226:11)
[MJSONWP]     at AppiumDriver.getDriverAndVersionForCaps [as createSession] (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/lib/appium.js:300:66)
[MJSONWP]     at AppiumDriver.executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:376:19)
[MJSONWP]     at AppiumDriver.executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/lib/appium.js:482:26)
[MJSONWP]     at executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/protocol/protocol.js:306:34)
[MJSONWP]     at asyncHandler (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/protocol/protocol.js:432:15)
[MJSONWP]     at Layer.handle [as handle_request] (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/layer.js:95:5)
[MJSONWP]     at next (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/route.js:137:13)
[MJSONWP]     at Route.dispatch (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/route.js:112:3)
[MJSONWP]     at Layer.handle [as handle_request] (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/layer.js:95:5)
[MJSONWP]     at /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/index.js:281:22
[MJSONWP]     at Function.process_params (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/index.js:335:12)
[MJSONWP]     at next (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/index.js:275:10)
[MJSONWP]     at logger (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/morgan/index.js:144:5)
[MJSONWP]     at Layer.handle [as handle_request] (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/layer.js:95:5)
[MJSONWP]     at trim_prefix (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/index.js:317:13)
[MJSONWP]     at /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/index.js:284:7
[MJSONWP]     at Function.process_params (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/index.js:335:12)
[MJSONWP]     at next (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/express/lib/router/index.js:275:10)
[MJSONWP]     at /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/body-parser/lib/read.js:130:5
[MJSONWP]     at invokeCallback (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/raw-body/index.js:224:16)
[MJSONWP]     at done (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/raw-body/index.js:213:7)
[MJSONWP]     at IncomingMessage.onEnd (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/raw-body/index.js:273:7)
[MJSONWP]     at IncomingMessage.emit (events.js:182:13)
[MJSONWP]     at endReadableNT (_stream_readable.js:1090:12)
[MJSONWP]     at process._tickCallback (internal/process/next_tick.js:63:19)
[HTTP] <-- POST /wd/hub/session 500 11 ms - 254
[HTTP] 
[HTTP] --> DELETE /wd/hub/session
[HTTP] {}
[HTTP] No route found. Setting content type to 'text/plain'
[HTTP] <-- DELETE /wd/hub/session 404 1 ms - 57
[HTTP] 

应该如何解决?

我认为您在 deviceNameplatformNameplatformVersion 所需功能中传递的值应该与 Xcode 中的模拟器相匹配,所以appium 可以找到并启动它。

以下一组功能在过去对我有用:

File demoAppPath = new File("Demo App");
File demoApp = new File(demoAppPath, "Demo.app");

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(MobileCapabilityType.APP, demoApp.getAbsolutePath());
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 8");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "IOS");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "13.2");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.IOS_XCUI_TEST);

请注意,我的 Xcode 中有一个模拟器,名称为 iPhone 8,版本为 iOS 13.2。希望对您有所帮助!!

经过长时间的搜索,我找到了解决问题的方法。

期望的能力需要是:

  "xcodeOrgId": "XXXXXXXXX",
  "xcodeSigningId": "iPhone Developer",
  "udid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "platformName": "iOS",
  "deviceName": "DEVICE NAME",
  "bundleId": "BUNDLE ID",
  "automationName": "XCUITest"

执行本教程中的步骤: https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md

在终端上执行此命令后出现错误

security unlock-keychain -p ****

一切正常,我可以检查我的应用程序和 运行 我的自动化测试。

如果您遇到同样的问题,希望对您有所帮助。

我遇到了这个问题并查看了许多解决方案,但 none 有效。最后,我将 Appium 桌面更新到 v1.18.3,将 Appium CLI 更新到 v1.19.1。真的行。所以,可能是版本bug。