Calabash Calabash Android 使用教程 (三)

詹金辉 · 2015年07月23日 · 4252 次阅读
本帖已被设为精华帖!

前面说了一下 Calabash-Android 的安装和基本使用,这一节说一下用例执行流程

  1. Features —— 这里的 feature 就是 cucumber 的 feature,用来描述 user stories 。

  2. Step Definitions —— Calabash Android 事先已经定义了一些通用的 step。你可以根据自己的需求,定义更加复杂的步骤。

  3. Your app —— 测试之前,你不必对你的应用修改。(这里其实是有问题,后面我们会说到。)

  4. Instrumentation Test Server —— 这是一个应用,在运行测试的时候会被安装到设备中去。 这个应用是基于 Android SDK 里的 ActivityInstrumentationTestCase2。它是 Calabash Android 框架的一部分。Robotium 就集成在这个应用里。

    总结:PC 端使用了 cucumber 框架,通过 http 和 json 与模拟器和真机上安装的测试 apk 通信,测试 apk 调用 Robotium 的方法来进行 UI 自动化测试,支持 webview 操作。

一、Features

既然 Calabash Android 使用的是 Cucumber 框架,Features 文件自然可以被 Cucumber 解释并执行,像前面一节说的 my_first.feature 文件
关于 Cucumber 的语法介绍,下面一篇文章可以帮助快速的理解入门,这里就不多写了
Cucumber 入门之 Gherkin

二、预定义 steps

feature 文件里面的 step 是在哪里定义的呢,进入到 ruby 安装目录 (根据自己安装目录查找) C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\calabash-android-0.5.12\lib\calabash-android\steps

可以看到,这个目录下有很多 ***_steps.rb 的文件,这些就是 Calabash Android 预定义的 step 文件,里面包含了点击、滑动、输入、截图等操作步骤,详情可参考官方文档:https://github.com/calabash/calabash-android/blob/master/ruby-gem/lib/calabash-android/canned_steps.md

三、自定义 steps

1.通过上面的内容,了解了用例的编写方法,下面实现一个微信登录的功能,修改 my_first.feature

2.下面在 E:\Android_Test\features\step_definitions 目录,定义一个 login_steps.rb 文件,内容如下

Then /^I enter "([^\"]*)" and "([^\"]*)"$/ do |username, password|
  enter_text("android.widget.EditText index:0", username)
  enter_text("android.widget.EditText index:1", password)
end

3.在 my_first.feature 中修改内容如下

运行 E:\Android_Test>calabash-android run weixin622android580.apk,可以看到两个用例的运行效果相同,关于 Calabash Android 的一些 Ruby api 可以参考文档https://github.com/calabash/calabash-android/blob/master/documentation/ruby_api.md

共收到 14 条回复 时间 点赞

部分代码片段用代码块吧?@ 楼主

使用 calabash 测试公司应用遇到了一个问题,可以帮忙看看嘛

#2 楼 @wodeta33 adb 连接正常吗?Server 有没有正常编译安装?我也没遇到过这类问题不知道原因!Google 了一下,貌似是安装版本有问题

#3 楼 @jinhui20073000 adb 和 server 都正常,安装版本貌似就是安装你的第一个教程装的。

#4 楼 @wodeta33 看错误提示是连接不上测试服务,使用 logcat 查一下日志,看是什么原因

楼主,请问报错:invalid byte sequence in UTF-8 (ArgumentError)! 怎么办?

#7 楼 @cyhqq12369 先在 cmd 里面执行 chcp 65001,切换至 UTF-8 编码,执行命令后切换回 GBK,执行 chcp 936

#4 楼 @wodeta33 跟你出现了一样的问题,请问你当时是怎么解决的啊

chenyinghong 回复

我也遇到同样的问题了,.feature 文件中有中文 不能使用记事本编辑 , 下载个代码编辑器编辑.feature 文件就好啦

楼主我碰到这个问题怎么解决呢?

楼主,我写的 feature 文件中含中文,在执行时无法识别,怎么解决

点击中文按钮总是超时

匿名 #14 · 2018年11月26日

你好~想问下 calabash 怎么打开 Android app 的开发者选项呢

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