ios - 通过 REST API 直接与手机通信,自动化移动设备应用程序

标签 ios xcode selenium automation appium

我目前正在开发一个严重依赖 appium/selenium 进行自动化的项目。这些框架非常适合入门,但稳健性还不够,并且需要大量额外的硬件/软件来运行自动化。比如macOS、xcode、adb、appium、selenium、usb连接或者通过WIFI连接(我们目前必须使用的)。这个自动化堆栈中有很多依赖项,如果有一个更干净、更可靠和可扩展的解决方案就好了。

所以我想知道。有谁知道一种通过 REST api 使用直接位于设备上的服务器运行 iOS 和 Android 自动化的方法,使我们能够与设备进行通信,如 curl -POST <device_ip>:<port>/session/{sessionId}/openApp .

想想 Facebook 构建的 WebDriverAgent,但该代理不是使用 xcodebuild 构建的,而是仅存在于设备上。本质上,当你构建这个框架时,它会启动我所描述的服务器,但它依赖于 xcode,我最终希望删除 xcode,使其不再出现在图片中。我知道今天我看到人们在 WDA 服务器和 xcode 上都遇到了很多问题。特别是新版本,以及 Facebook 现在如何存档 WebDriverAgent。

我们不能创建一个可以充当始终运行的 WebDriverServer 的应用程序,并且仅使用与今天相同的逻辑..通过启动 session ,按 Id 查找元素,单击它们,然后继续。这也将消除在您的计算机上运行 Appium 的需要,并依靠它通过 iOS 将您的命令代理到该 WDA 服务器。

我知道 Android 的情况要简单得多,目前我更关注如何使用 iOS 来解决这个问题。

如果有人对这个问题有任何见解,我将不胜感激,如果有人对 Appium、iOS 自动化、Android 自动化或其他可以提出的观点有建议,请向我发送您的反馈。

我们确实使用真实设备运行自动化!

最佳答案

我使用 Appium/Selenium 从 Rest API 访问。在我看来,这比构建自己的更容易。

解决方案之一是我们目前正在使用 Flutter 进行项目 - 仍然需要您的 Xcode 来登录依赖项。您还需要确保安装了 libimobiledevice 和 ideviceinstaller,最后修改 Flutter。我们从rest api 调用真实设备。我们目前正在扩展和监控性能。

我能想到的另一个可行的替代方案,通过 XCTest 比 Appium 更容易。只需在您的应用程序中提供端点并在 XCTest 中创建一个包装器。调用其余api并在XCTest中运行测试。从长远来看,它更稳定、更快。

但是对于大部分项目,在我们评估此解决方案时,我仍然使用 Appium 来测试 iOS。

关于ios - 通过 REST API 直接与手机通信,自动化移动设备应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58348310/

相关文章:

android - 根据我的需要选择正确的数据库

ios - Swift 将 TableView 单元格中的数据传递给 View Controller

Cordova 应用程序中的 iOS 内部版本号

java - 使用 selenium xpath 动态查找前一个兄弟元素

java - 即使 xpath 正确也无法找到元素

java - 检查元素在 Selenium Java 中是否可点击

iphone - 在 iOS6 中启用哪些 API 来实现视频稳定?

ios - UICollectionView 的层次结构是什么?

ios - 我的应用程序无法在 iOS 设备上启动(导出的 .ipa)

c++ - Xcode9 领域错误 - 没有可行的重载 ‘=’