Appium 写了一个 iOS 端自动生成 Appium 脚本代码的开源工具

Lobster-King · 2018年08月15日 · 最后由 Lobster-King 回复于 2019年01月09日 · 1831 次阅读

总览

英文说明

IQUITestCodeMaker 是一款轻量级的、无侵入性的自动生成 UI 测试脚本的工具,目前支持 Appium 相关脚本代码的自动生成,后续会支持对阿里 Macaca 相关主流框架脚本代码的自动生成。

Tester:对于测试朋友来讲,你需要做的就是让你们的 iOSer 把该框架通过 pod 引入工程即可。你不需要启动 Appium Desktop 或者启动 inspector 服务去编写 UI 测试脚本,你只需要点点点,然后利用 Debug 工具把脚本导出。

iOSer:利用 IQUITestCodeMaker 中截获用户事件的相关实现,结合控件唯一标识方案,还可以做很多事情(比如无侵入打点等)。

IQUITestCodeMaker 特性

  • 无侵入性,不需要开发人员添加额外代码到工程中,你只需要用 pod 安装一下依赖即可。
  • 所有的流程都是自动化的,不需要人为介入,用户的操作事件会被自动截获并生成相关代码。
  • 为了让测试结果更准确,强烈建议开发人员手动给控件设置 accessibilityIdentifier,通过 runtime 生成的 id 并不完全可靠,而且会有一定的性能开销。
  • IQUITestCodeMaker 默认再 DEBUG 模式开启,在 RELEASE 模式关闭。
  • 通过 Debug Ball,你可以很方便的把脚本导出到桌面,你也可以很方便的进行代码转换。

目前支持的语言

  • [OK] Ruby
  • [OK] Python
  • [OK] JavaScript(webdriverio)
  • [OK] JavaScript(Promise)
  • [OK] Java
  • [NO] Objective-C
  • [NO] Swift

参考文档

让我们开始吧

安装步骤

安装 cocoapods

$ gem install cocoapods

修改 Podfile

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

target 'Example' do
    pod 'IQUITestCodeMaker',:git => 'https://github.com/Lobster-King/IQUITestCodeMaker.git',:configurations => ['Debug']
end

执行命令

$ pod install

IQUITestCodeMaker.h

/*注意:
 1.该组件通过运行时自动生成并获取标签,会有一定的性能开销,默认DEBUG模式开启,RELEASE模式关闭。
 2.也可以通过打开#define IQ_UITEST_CODEMAKER_ENABLED 0 强制关闭该组件。
 */

//#define IQ_UITEST_CODEMAKER_ENABLED 0

#ifdef IQ_UITEST_CODEMAKER_ENABLED
#define IQ_CODEMAKER_ENABLED IQ_UITEST_CODEMAKER_ENABLED
#else
#define IQ_CODEMAKER_ENABLED DEBUG
#endif

/*Debug球注意事项:
 1.默认对于Debug球相关UI不做hook操作。
 2.可以通过打开//#define IQ_UITEST_DEBUGBALL_ENABLED 0 强制关闭Debug工具
 */

//#define IQ_UITEST_DEBUGBALL_ENABLED 0

#ifdef IQ_UITEST_DEBUGBALL_ENABLED
#define IQ_DEBUGBALL_ENABLED IQ_UITEST_DEBUGBALL_ENABLED
#else
#define IQ_DEBUGBALL_ENABLED DEBUG
#endif

Debug 球

关于 Appium

Appium 是一个开源的、跨平台的自动化测试框架,目前支持 native、hybrid、web、app、模拟器相关的自动化测试。

附一链接:

IQUITestCodeMaker 路线图

  • 后续支持 Macaca 等其他主流框架。
  • 支持更多脚本语言。
  • 多种 UI 元素定位策略,目前只支持 accessibilityIdentifier。

遇到问题?

你可以通过如下的方式联系到我

共收到 6 条回复 时间 点赞

挺好的思路,不过感觉导出的脚本还是得经过一系列加工才能正常运行

adfghzhang 回复

是的,通过机器生成的代码是不可能覆盖各种业务场景的,跟 Appium-Desk 还有 inspetor 一样,生成脚本是辅助,满足不了业务的时候还得需要人工介入。

感觉还是会有很多问题,

wtnhz 回复

感谢关注,目前是存在很多问题,撸主正在努力 coding 中。同时也欢迎反馈 ISSUE 或者提交 PR~😂

这个类似于录制?

kael 回复

自动录制。

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