Fonemonkey录制回放android应用程序界面交互操作

上一篇 / 下一篇  2012-03-30 16:28:48

Fonemonkey录制回放android应用程序界面交互操作---fonemonkey for android自动化初探

 


Introduction



FoneMonkey records and plays back user interface interactions with native Android applications. 


要使用FoneMonkey,则将FoneMonkey构建到你的Andr​​oid应用程序。然后,您可以使用FoneMonkey控制台录制和播放用户界面交互。 控制台是一个独立的桌面应用程序可以连接到Android模拟器或实际设备(通过USB)或到达的IP地址连接上运行的应用程序。 


可以插入些验证步骤到你录制的脚本代码中,作为持续集成构建的一部分,生成可执行的JUnit 测试脚本。



下载与安装

  1. 下载 fonemonkey.zip.
  2. 通过以下更新网站安装Fonemonkey 控制台插件   
        Eclipse Update Site: http://www.gorillalogic.com/userfiles/androidmonkey/FoneMonkeyUpdatesite/ 
        注意:当您第一次启动控制台,系统将提示您提供的Android SDK安装目录的路径。
     
   3. 实现你的android项目FoneMonkey 自动化.具体步骤如下:       

     1)Eclipse中安装AspectJ开发工具 插件;
     
  
       2)右击你的待录制工程,select Configure > Convert to AspectJ Project...
       3)AspectJ jar 将被加入到classpath,和AspectJ builder被加入到android project builder(你可撤销select AspectJ Tools > Remove AspectJ Capability)
       4)解压FoneMonkeyAndroid.zip文件。 fonemonkey文件夹复制到您的android project项目的根目录,展开项目目录文件夹;       
       5)右击fonemonkey/aspects文件夹,select Build Path > Use as Source Folder(aspects 包括FoneMonkey要求拦截应用程序事件有关AspectJ切入点的定义);
       6)打开fonemonkey/libs目录,选择fonemonkey.jar 和servlet-api.jar,右击select Build Path > Add to Build Path       
       7)打开工程的manifest file,添加下列权限:
            (1).android.permission.GET_TASKS
            (2).android.permission.INTERNET       
        8)Clean-build 和运行程序

 

启动控制台 如果尚未运行过FoneMonkey控制台 ,首次运行控制台,会被提示输入你的Andr​​oid SDK的位置。
你设置SDK location 通过 Edit > Set Android Home... 菜单项。 
连接到您的应用程序 Select the menu option Connect > Emulator/Local Device ;
Select Connect > Remote Device 连接到远程设备的应用程序上;



控制台将显示一条消息,表明它是否可以成功连接。


开始录制

 

正如您与您的应用程序互动,FoneMonkey记录相应的命令。 每个记录的命令有以下值:
  • action - 记录interfaction,例如“Click”或“EnterText”。 
  • component - 接受动作的组件类型,例如“Button”或“InputField” 。  此组件可跨平台,许多不同的Andr​​oid类可以映射到相同的FoneMonkey组件类型。 
  • monkeyID - 组件的标识符。 FoneMonkey派生一个默认标识符基于一些逻辑元件。 例如,一个按钮的默认monkeyID是其标签文本。 
  • Args - 有些命令有关联的参数。 例如,EnterText命令有一个参数,它提供了输入值的文本价值。 
  • Timeout - 以毫秒为单位,等待命令的相应时间。默认的超时时间通过  Play > Set Default Timeout... 菜单来设定.

 

播放您的脚本 单击工具栏上的“播放”按钮,播放你的脚本。 双击某一行将自动播放此行脚本,也可以选择并播放多行命令。
若只有一行被选中,则点击播放按键,将从此行开始播放脚本直至末尾。如果脚本回放过程中发生故障,例如,如果无法找到组件,突出失败的地方和消息显示在控制台窗口的底部。 



编辑你的脚本 
你可以在控制台表格中直接改写你的脚本代码, 右击表中的单元格将显示各种编辑选项。 你可进行 Edit > Insert Row or Edit > Append Row

增添验证步骤 
要添加一个验证步骤,需创建一个新行,右击菜单中选择Duplicate Row,或通过选择Edit > Insert Command,即可插入一个验证步骤在此两行中。
右击此行,可改变和选择某个验证命令,每个验证命令需要两个参数。第一个参数是验证组件属性,而第二个参数是预期值。
例如,你可以通过以下命令验证当前“Planets”的下拉列表中被选项为Mercury.VerifyExact DropDownList Planets selectedItem Mercury The property selectedItem is the property of an Android Spinner component that contains the currently selected value.如下的验证命令可用。
  • VerifyExists - 验证是否存在此monkeyID的组件。 
  • VerifyExact - 验证是否存在此类型和monkeyID的组件,ARG1指定属性,ARG2指定精确值。 
  • VerifyWildcard - 验证是否存在此类型和monkeyID的组件,ARG1指定属性,ARG2指定一个通配符模式匹配(文件模式匹配包含*通配符?)。
  • VerifyRegex - 验证是否存在此类型和monkeyID的组件,ARG1指定一个匹配正则表达式属性,ARG2指定精确值。 





认识组件属性 


如上所述,FoneMonkey验证组件的属性。 这些属性是“JavaBean属性”的组成部分,它们的值是通过getSomeProperty 和 isSomeProperty 方法提供的。属性名是方法的名字去掉"get" or "is", 并以小写字母开头。 
For example, the isChecked() value of a CheckBox is accessed by the property "checked", and the getSelectedItem() value of a List is accessed by the "selectedItem" property.

您可以通过阅读组件的Javadoc文档,查找组件属性的名称。 
所有属性值转换为字符串值比对预期值或形式。 

某些情况下需设定执行脚本等待时间

FoneMonkey会重试执行命令,直到执行完成或执行超时。超时值设置菜单项:Play > Default Timeout。 在控制台上设置超时值(以毫秒为单位),您可以设置单个命令的超时。 

例如,假定应用程序的一个按钮是采取从一到十秒的计时方式,来控制检索所有数据的所需的时间的。则执行验证此按钮时,你可以强制脚本等待10秒,设置VerifyExists 超时值为10000.



设定播放速度
选择菜单项 Play > Playback Speed,设置执行完每个命令后迟延多少毫秒,来控制播放速度 Because FoneMonkey retries failed commands, it's possible to set the delay time to zero in which case the script. will run as fast as possible.由于FoneMonkey会重试失败的命令,在这样情况下,尽可能设置延迟时间为零,以便尽快的执行脚本。 

生成 JUnit Tests



控制台可以导出JUnit tests的执行脚本。这些脚本用例作为独立的进程,运行在任何JDK的平台上。不能直接运行在android模拟器和设备。 



要在Eclipse中运行测试,需创建个新的Java项目。 选择菜单项 File > Export JUnit TestCase 生成一个 JUnit TestCase.保存TestCase的源代码到你新创建的java项目的默认包中。 







认识生成的 JUnit Tests



下面是一个生成的JUnit TestCase的例子: 




对每个命令,FoneMonkey每行代码会生成相对应的命令行
app.find("ComponentType", "monkeyID").action(args) 

运行生成的测试用例

运行在Eclipse中生成的TestCase,右击此源文件,并选择Run As...> JUnit Application。 Eclipse会提示TestCase运行情况,然后将执行的TestCase的结果以JUnit视图形式显示出来。

TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-26  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 3539
  • 日志数: 3
  • 图片数: 16777200
  • 建立时间: 2012-03-21
  • 更新时间: 2013-01-06

RSS订阅

Open Toolbar