正如您已经发现的,Appium 的最大缺点之一是它是一个第三方框架,每次 Apple 发布 Xcode 时它都会崩溃。这不太可能改变,因为苹果现在维护着自己的 UI 测试框架。
使用 Appium 还有一些其他优点 - 您可以从多种语言(Java、Ruby、Python、C#...)中进行选择,这使得任何可以使用其中一种非常流行的语言进行编程的人都可以使用它,并且您可以可以想象,在 iOS 和 Android 上同一应用程序的测试之间共享代码。
根据我的经验,虽然有很多人使用 Appium,但社区支持水平并不能弥补令人失望的维护水平;除了 Appium 与 Xcode 的兼容性脆弱之外,我发现一些关键功能在某些绑定中仍未实现,例如在 Python 中滚动。
对于 UI 测试,可靠性是框架最重要的方面。如果没有可靠性,您就不能相信测试能够标记问题,如果没有信任,您的测试对您和您的团队几乎没有任何价值。这就是为什么我推荐 XCTest 而不是任何第三方框架的原因。
使用 XCTest,您永远不必担心无法更新您的 Xcode 版本,并且该框架按照 Apple 的发布标准进行维护。与所有 iOS UI 测试框架一样,也存在一些错误(特别是在选择器方面),但我发现该框架的稳定性以及它由 Apple 拥有的事实超过了奇怪错误的缺点。
获得 Apple 的认可对于使用 XCTest 来说是一个重要的好处,因为 Apple 可以删除对 Appium 所依赖的 API 的访问,并且 Appium 可能会在一夜之间永远停止工作。从历史上看,苹果不会在没有至少一年通知的情况下简单地取消对自己框架的支持。
要直接使用XCTest,您需要使用Swift(推荐)或Objective-C。虽然没有 Appium 提供的语言选择那么多,但对两种语言的支持是一致的,因为它们都使用相同的实现。 Swift 是一种强有力的语言选择,特别是对于较大的项目,因为它的类型安全性允许您在运行之前注意到许多编程错误。这两种语言还在 Xcode 中为您提供了强大的智能感知(自动完成)支持,这是 Python 或 Ruby 等“动态”语言所不提供的开箱即用的功能。
随着有关将 XCTest 用于 UI 测试的更多信息的出现,以及越来越多的人觉得能够采用它,围绕 XCTest 的社区正在不断发展。用于 UI 测试的框架的许多部分多年来一直用于单元测试,因此在许多方面,在添加 UI 测试支持之前,已经有很多有关使用它的信息。
两个框架都使用相似的概念 - XCUIApplication 类似于 Appium 的 Driver,它使您可以访问屏幕上的内容。两个框架提供的功能级别可以说非常相似,因此这取决于您的优先事项 - 可靠性(XCTest)或跨其他平台的可重用性和语言可访问性(Appium)。