中文Win7下成功安装calabash-android步骤
Calabash-android是支持android的UI自动化测试框架,网上看见很多同学说,安装calabash比较费劲,特别是Windows下安装,也没有一个详细的安装手册可供参考。正好,今天在Windows 7 上安装calabash-android成功,忍不住要分享一下。
我为什么要特别在标题中指出中文Win7?
因为我第一次在英文Win7下没碰到任何问题,第二次在中文Win7下安装碰到两个大问题,但都被我求助百度解决了。
第一个问题:中文Win7下不认识手机设备,第一台英文Win7下已经有人安装了豌豆荚。
第二个问题:中文Win7下运行calabash-android,报GBK错误。
calabash简介:
Calabash-android是支持android的UI自动化测试框架,PC端使用了cucumber框架,通过http和json与模拟器和真机上安装的测试apk通信,测试apk调用robotium的方法来进行UI自动化测试,支持webview操作。
安装ruby1.9.3
calabash-android 的git网址: https://github.com/calabash/calabash-android
进入Installation: https://github.com/calabash/calabash-android/blob/master/documentation/installation.md
因为要在Windows下安装,所以按照指示进入: http://rubyinstaller.org/
点击红色的Download图标,进入: http://rubyinstaller.org/downloads/

Ruby2.0据说不兼容旧版本,所以下载稳定版Ruby 1.9.3-p545.7z 解压到D:\下
把ruby的执行目录D:\ruby-1.9.3-p545-i386-mingw32\bin,加入到环境变量Path
运行命令ruby -v,看到如下结果,表示ruby安装成功
C:\Users\asus>ruby -v
ruby 1.9.3p545 (2014-02-24) [i386-mingw32]
安装JDK 7u65
安装JDK网上有很多教程,以下简略介绍。
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
jdk-7u65-windows-x64.exe
安装,并设置环境变量:
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_65
Path添加内容: ";%JAVA_HOME%\bin;%JAVA_HOME%\..\jre\bin"
启动命令行工具cmd.exe,输入:
C:\Users\asus>javac -version
javac 1.7.0_65
看到上述结果,说明jdk已正确安装。
安装Android SDK
到 http://developer.android.com/sdk/index.html 下载适用于Windows的SDK
google的网站,国内正常访问不了了。
幸好有个中国好码农整理了一个最新版Android SDK下载网站:
http://www.androiddevtools.cn/
我现在的是 ADT Bundle > 23.0.2 > Windows > 64位
因为我的Windows7已经安装了64位的JDK,所以必须安装64位的Android SDK(主要是64位的Eclipse)
在目录D:\adt-bundle-windows-x86_64-20140702\eclipse下双击文件eclipse.exe
看到Android Develop Kit启动页:


设置环境变量:
ANDROID_HOME=D:\adt-bundle-windows-x86_64-20140702\sdk
安装Ant-1.9.4
网址:http://ant.apache.org/bindownload.cgi
下载 apache-ant-1.9.4-bin.zip
解压到D:\下,
设置环境变量:
ANT_HOME=D:\apache-ant-1.9.4
Path添加内容: ";%ANT_HOME%\bin"
启动命令行工具cmd.exe,输入:
C:\Users\asus>ant
Buildfile: build.xml does not exist!
Build failed
看到上述结果,说明ant已正确安装。
gem命令安装calabash-android
设置gem的仓库为taobao
C:\Users\asus>gem sources -l
*** CURRENT SOURCES ***
http://rubygems.org/
C:\Users\asus>gem sources --remove http://rubygems.org/
source https://rubygems.org/ not present in cache
C:\Users\asus>gem sources -a http://ruby.taobao.org/
http://ruby.taobao.org/ added to sources
C:\Users\asus>gem sources -l
*** CURRENT SOURCES ***
http://ruby.taobao.org/
用gem命令安装calabash-android
C:\Users\asus>gem install calabash-android
...
Installing RDoc documentation for escape-0.0.4...
Installing RDoc documentation for calabash-android-0.5.1...
C:\Users\asus>calabash-android version
0.5.1
下载calabash-android-demoapp
https://github.com/calabash/calabash-android-demoapp
点击 Download ZIP下载calabash-android-demoapp-master.zip,并解压到D:\
ADT中导入并运行calabash-android-demoapp


选择: D:\calabash-android-demoapp-master

安装手机驱动
把手机通过USB线接到电脑上,手机上确保打开“USB调试”
如果电脑屏幕右下角提示,设备驱动已正确安装,请看下一步。
如果电脑屏幕右下角提示,设备驱动安装失败:

需要到网站 http://www.drivergenius.com/ 下载并安装驱动精灵标准版,只要打开驱动精灵,就会引导你安装手机驱动。

驱动安装成功后:

接下去在ADT中运行Run > Run As > Android Application:

点击"OK"按钮,ADT就会上传AndroidDemoProject.apk到手机,并启动应用,看到“Hello World, AndroidDemoProject!”

使用calabash-android运行AndroidDemoProject.apk
打开cmd,进入D:\calabash-android-demoapp-master\calabash目录,运行:
calabash-android run D:\calabash-android-demoapp-master\bin\AndroidDemoProject.apk

主要错误信息:helpers.rb:105:in `scan': invalid byte sequence in GBK
可是我在英文Windows上运行正确啊,一定是英文系统和中文系统的缺省编码问题:
cmd > 属性 > 选项 > 当前代码页:936 简体中文 GBK

照着 http://blog.sina.com.cn/s/blog_628e2ab30101ajcg.html 的解决方案,把cmd的中文编码设置成UTF-8
cmd中输入:chcp 65001

cmd > 属性 > 选项 > 当前代码页:65001 UTF-8

再次运行calabash-android:

calabash-android打印彩色结果
上面的测试结果提醒:WARNING: You must use ANSICON 1.31 or higher
从 https://github.com/adoxa/ansicon/ 下载ansicon并启动,
同样要输入 chcp 65001
再次运行calabash-android:

大功告成!
建立ansicon快捷链接
接下去好人做到底,在桌面上建一个cmd快捷链接,点击后直接进入UTF-8编码的ansicon控制台
确保ansicon.exe放置在Path能找到的目录下,比如,我放在ruby的bin目录下:

桌面上建一个cmd快捷链接:


注意,快捷链接的目标:
%windir%\system32\cmd.exe /k chcp 65001&&ansicon
打开该快捷链接后:

calabash-android输出html报告文件
calabash-android run ../bin/AndroidDemoProject.apk --format html --out=report.html


关于GBK编码问题的后续补充
- 我回去看了英文Win7和的cmd.exe的编码,也是GBK,但是没有出现过“invalid byte sequence in GBK ”的问题
- 我在中文Win7上用chcp 65001设置成UTF-8,并测试成功后,再尝试直接cmd.exe/ansicon.exe/powershell.exe保持GBK编码的情况下,直接运行calabash,再也没有报过“invalid byte sequence in GBK ”的问题,难道第一次正确运行后,自动修改了什么配置吗?
- 在中文Win7上用chcp 65001设置成UTF-8后,如果calabash的脚本中包含中文,运行calabash时不能打印出中文内容。
- 在中文Win7的GBK编码的命令行下,如果calabash的脚本中包含中文,运行calabash时能打印出中文内容。
- 在英文Win7的GBK编码的命令行下,如果calabash的脚本中包含中文,运行calabash时能打印出中文内容。
- 在Ubuntu Linux的控制台下,如果calabash的脚本中包含中文,运行calabash时能打印出中文内容。
算了,不去找原因了,记住就是了。
所以,建立calabash测试环境的容易程度:
Linux > 英文Windows > 中文Windows
中文Win7下成功安装calabash-android步骤的更多相关文章
- win7下硬盘安装win7+linuxUbuntu双系统方法
Linux安装大致介绍: win7下硬盘安装win7+linuxUbuntu双系统方法 原则: 所有的看完在装,请仔细看 一 条件: 1. 系统选择 linux unbuntu12.04.2-desk ...
- Windows 7硬盘安装CentOS 6.4 双系统 (WIN7下硬盘安装Linux(Fedora 16,CentOS 6.2,Ubuntu 12.04))
WIN7下硬盘安装Linux(Fedora 16,CentOS 6.2,Ubuntu 12.04) 最近在看<鸟哥私房菜:基础学习篇>,觉得很不错,想要用U盘装个windows 7 和 ...
- 自己瞎捣腾的Win7下Linux安装之路-----图例篇
写在前面 网上很多这方面的教程,我也是参考他们的文章和一些书籍才弄成功.没啥创新性,只为记录下来,以供自已理解和以后复习. 所谓工欲善其事,必先利其器.俺想学习Linux,当然是要先装一个Linux( ...
- Window下memcached安装与测试步骤
如何在Window下memcached安装与测试步骤 工具/原料 电脑 memcached 软件 方法/步骤 软件包下载 下载Memercached For Windows:http://downlo ...
- win7下如何安装JDK
第一步:点击下载好的JDK安装程序,百度一下,网上很多,然后弹出如下界面,点击“下一步”即可. 2 第二步:此时比较关键,设置安装的路径,可以事先建立一个文件夹,以在D盘为例,如D:\java. 3 ...
- win7下怎么安装IIS
工具/原料 win7旗舰版系统 笔记本一台 WIN7下怎么安装iis教程: 点击开始→控制面板,然后再点击程序和功能,勿点击卸载程序,否则到不了目标系统界面. 然后在程序和功能下面,点击打开和关闭wi ...
- Win7下硬盘安装fedora17
Win7下硬盘安装fedora17 这几天经过很多次的百度和实验,终于成功的在我的x64机子上装上了fedora17,以此分享给大家,希望能给大家帮助. 一.准备工作: 1.工具,因为我们电脑上大部分 ...
- Win7下硬盘安装Linux双系统
Win7下硬盘安装CentOS6.2 一.准备工作:划出磁盘空闲空间和准备安装文件 参考文献: [Win7下硬盘安装Linux总结(CentOS)]来源:Linux社区 作者:lixianlin ...
- [moka同学摘录]在Centos 6.5下成功安装和配置了vim7.4
来源:https://my.oschina.net/gzyh/blog/266097 资源下载地址: 链接:http://pan.baidu.com/s/1kVuaV5P 密码:xkq9 摘要: ...
随机推荐
- SQL一列多行字符串分组合并
最近工作遇到如下数据:需要合并后只剩下两行的数据,普通的group by 是不能实现的.(如图) 利用如下SQL代码,即可实现需求(如图): 利用 stuff 函数实现分拆合并操作 select Te ...
- Linux学习笔记(4)-文本编辑器vi的使用
vi的三种编辑模式 命令模式(Command mode) 在此模式下可以控制光标的移动,可以删除字符,删除行,还可以对某个段落进行复制和移动 输入模式(Insert mode) 只有在此模式下,可以输 ...
- python 中的列表解析和生成表达式 - 转
优雅.清晰和务实都是python的核心价值观,如果想通过操作和处理一个序列(或其他的可迭代对象)来创建一个新的列表时可以使用列表解析( List comprehensions)和生成表达式,通过这两 ...
- 1206: [HNOI2005]虚拟内存 - BZOJ
Description 操作系统中一种重要的存储管理技术就是虚拟内存技术.操作系统中允许进程同时运行,也就是并行.每个进程都有其相对独立的数据块(进程运行的过程中将对其进行读写操作).理想的情况下,这 ...
- 3.5 spring-replaced-method 子元素的使用与解析
1.replaced-method 子元素 方法替换: 可以在运行时用新的方法替换现有的方法,与之前的 look-up不同的是replace-method 不但可以动态地替换返回的实体bean,而且可 ...
- 【莫队】bzoj 3781,bzoj 2038,bzoj 3289
好像又有一个星期没更博客了.. 最近疯狂考试...唯一有点收获的就是学会了莫队这种神奇的算法.. 听起来很难..其实是一个很简单的东西.. 就是在区间处理问题时对于一个待求区间[L',R']通过之前求 ...
- 使用C#选择文件夹、打开文件夹、选择文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- C++ 嵌套类使用(三)
如果嵌套类型和其外部类型之间的关系需要成员可访问性语义,需要使用C++嵌套类,嵌套类型不应针对其声明类型以外的类型执行任务,而C++局部类允许类.结构和接口被分成多个小块儿并存储在不同的源文件中,这样 ...
- cf 148D 概率DP
题意:原来袋子里有w只白鼠和b只黑鼠龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老师谁就赢.王妃每次抓一只老鼠,龙每次抓完一只老鼠之后会有一只老鼠跑出来.每次抓老鼠和跑出来的老鼠都是随机的.如果两个人都没 ...
- ios loading视图动画(模仿58同城)
最近看了58同城的加载视图,感觉很不错,如下图: 所以想模仿写一个,下载58同城的app,解压,发现它用的是图片来实现的动画效果, 并不是绘制出来的,所以这就相对简单些了,其实整个动画的逻辑不复杂,无 ...