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,坐标长宽高等属性


↙↙↙阅读原文可查看相关链接,并与作者交流