Calabash Calabash Android 使用教程 (三)

詹金辉 · July 23, 2015 · Last by chilycily replied at November 26, 2018 · 1976 hits
本帖已被设为精华帖!

前面说了一下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文件中含中文,在执行时无法识别,怎么解决

点击中文按钮总是超时

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up