calabash iOS 由两部分构成:
用 ruby 设计的脚本 ,本地端库,下图的左半部分
用 Objective-C 写的服务框架 calabash.framework. ,下图的右半部分
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,坐标长宽高等属性