Calabash Calabash 原理介绍

noshuai · 2014年04月20日 · 最后由 恒温 回复于 2014年04月23日 · 2981 次阅读

calabash iOS 由两部分构成:
用 ruby 设计的脚本 ,本地端库,下图的左半部分
用 Objective-C 写的服务框架 calabash.framework. ,下图的右半部分

Alt text here

Ruby 部分
Calabash 的脚本是使用 cucumber 来进行组织,特定就是用自然语言来描述逻辑,具体执行部分才是用 ruby 编程语言。
Features 部分就是用自然语言来写的。
例如:

Feature: test startview
  Scenario: open startview
    Given App is launched
    When press "start" button
    Then check startview is opened
    And check otherview is dismissed

也可以写成:


Feature: 测试开始界面
  Scenario: 打开开始界面
    Given 程序被开启
    When 点击"开始"按钮
    Then 检查开始界面被显示
    And 检查其他界面被取消

甚至使用使用多语言支持后,Given,When 这种也可以用中文代替。

step definition 部分必须用 ruby 语言来具体定义
例如:


When (/^点击"([^\"]*)" 按钮$/) do | name |
    touch("view marked:'#{name}'")
end

ruby 客户端库部分:
解析脚本,并根据脚本的相应功能向 app 中的 server 发出 get 或 post

calabash.framework 部分:
这部分还正在深入研究中。
执行操作部分:
calabash 模拟用户操作的方式实质是调用了 UIAutomation.framework 的私用方法,执行点击长按拖动等操作

获取控件属性部分:
获得当前屏幕的 window,然后再遍历这个 window 下的所有 subview,获得每个 view 的 accessibilityLabel,坐标长宽高等属性

共收到 6 条回复 时间 点赞

Framework 没讲啊,讲了给你加精

#1 楼 @lihuazhang 别吝啬, 呵呵, 写的很好啦.
@noshuai 赞, 期待更深入的分享

这个框架限制了语言和框架, 虽然很好, 但是普及有难度

#1 楼 @lihuazhang framework 的深入讲解后续会单开一个,不过五一才有时间写
@seveniruby 求教一个问题 rvm 安装的 ruby,但是在 imac 程序调用命令没办法直接使用 rvm 的 ruby 来执行 rb 文件,直接使用命令行则没有问题,有啥解决思路没有?

#4 楼 @noshuai 用不起 mac, 哈哈, 让 mac 高手来回答吧. @lihuazhang

#4 楼 @noshuai imac 程序调用命令,你拿得肯定是系统的 ruby 啊。。

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