【问题标题】:automate mobile device apps by direct communication to the phone via REST api通过 REST api 直接与手机通信,自动化移动设备应用程序
【发布时间】:2020-02-09 09:33:09
【问题描述】:

我目前正在从事一个严重依赖 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 的问题。特别是新版本,以及 WebDriverAgent 现在如何被 facebook 存档。

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

我知道 android 是一个简单得多的画面,我目前更专注于如何使用 iOS 解决这个问题。

如果有人对 Appium、iOS 自动化、android 自动化或其他可以提出的观点有任何建议,我将不胜感激,请给我您的反馈。

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

【问题讨论】:

  • 我们是程序员,所以一切皆有可能。我建议为此创建一个操作系统。苹果太严格了。

标签: ios xcode selenium automation appium


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    如果您愿意使用商业工具,可以考虑使用xcuitrunner。它会在您的 iOS 设备上安装 Appium 的 WebDriverAgent 分支的最新版本,启动它(并使其保持活动状态),并返回一个 HTTP 端点,您可以使用该端点直接与 WebDriverAgent 交互。

    它有助于消除一些可能难以管理的依赖项(例如 Xcode)。不过,您仍然需要来自 Apple 的代码签名证书和配置文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-21
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多