Appium iOS pullFile 接口获取 iOS 真机设备文件提示没有实现

sevenseven · 2015年01月20日 · 1583 次阅读

Appium Client SDK 版本:1.2.1
Appium Server 版本:1.3.4

经过测试,Android 平台下,pullFile 取设备文件,接口是实现了的,并且测试通过。
但是在 IOS 平台下,pullFile 抛出未实现的异常。

请教一个论坛的达人,

  1. Appium 在哪个版本支持了获取 IOS 设备文件 pullFile 功能?
  2. 还有没有其他替代的方案,可以获取当前 App 所在目录下的文件?

谢谢。

共收到 3 条回复 时间 点赞

更新:

  1. 下载了 Server 1.3.4 版本 查看 Device 目录下的 iOSController.js 文件 发现如下代码: iOSController.pullFile = function (remotePath, cb) { logger.debug("Pulling " + remotePath + " from sim"); if (this.realDevice) { return cb(new NotYetImplementedError(), null); }

Appium Server 判断是否是 IOS 真机设备,若是真机设备,则返回未实现错误提示。
另外,查看库的发布历史和分支,该接口对 IOS 系统都未实现。TODO:Android 是通过 adb 支持的。

下一步打算:

  1. 查看 IOS 原生态的 UIAutomation 看看是否能够支持?若有进展会及时更新。现在还不了解 UIAutomation,还需查资料。
匿名 #2 · 2015年01月21日

期待研究结果 😄

更新:

  1. IOS 原生态提供的 UIAutomation 接口没有发现有支持获取应用程序内部的文件。Appium Sever 是基于 UIAutomation 的。换句话说,pullFile 在 IOS 系统下,没法实现。此路不通。
  2. 调查 iTools、PP 助手,发现两者是基于 iTunes 提供的 COM 协议做的二次开发。iTunes 是闭源的,真噁心~~~

对于手机上自动化测试,有一些测试用例没法通过界面上的控件来判定执行结果。之前的想法是基于日志来判定,测试的时候,手机端生成日志,PC 端获取日志。解决方案如下:

  1. 采用类似 iTools 的方式,获取手机上的日志文件。
  2. 采用 Socket 通信的方式。手机往固定的组播地址上发送日志报文,PC 端加入组播,获取报文。这种方式如果想使用单播或者 TCP 方式,可以在界面上隐藏设置 IP 和单播的组件来反馈说明。具体自己取舍。

目前,个人偏向第第 2 种。

以上如有错误,请及时联系本人,个人邮箱 Email 告知我,谢谢。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册