文章来源:http://www.cnblogs.com/raol/p/flexmonkey.html
我的有道云笔记:http://note.youdao.com/share/?id=22b79669c366c65e6bbdc5e541266b8f&type=note
1. 研究FlexMonkey的缘由, 关于自动化测试.
- FlexMonkium5.1.1.zip, 下载完之后别忘记安装FlexMonkeyConsole v5.1.1,到此软件准备完毕。为缓解蜗牛速度,
- 下方附件提供下载已上传至有道:
自动化测试之flexmonkey-页面flex元素识别机制
目前,项目组在做功能自动化的时候使用flexmonkey5对flex元素进行识别。经过研究,Flexmonkey遵循着这样的识别准则:
一.默认识别:
1.automationName
2.id
3.monkeyID
二.使用其他属性对识别
具体来说,
1.当元素拥有automationName时,默认以automationName来识别一个元素,automationName可以不用指出;
2.没有automationName的情况下,使用id来识别元素;
3.在没有automationName以及id的情况下,使用monkeyID来识别,flexmonkey官方文档建议使用1与2两种方式来识别元素;
4.除了这三个属性以外,还可以使用其他属性来识别元素,要求此属性能唯一标志出该元素。
目前在项目中的实际使用中发现,flex元素的属性存在这样的情况:
1.大多数元素都拥有automationName和id,且automationName与id相同;
2.拥有automationName和id,二者值不同;
3.只拥有automationName或者Id其中之一;
4.没有automationName与id。这种情况下,自动产生monkeyID。
在项目中发现,在同一个parentowner下,存在多个automationName与id都一样的元素时,默认只能识别到第一个元素。这个时候,有两个途径来解决同类元素的识别:
1.使用monkeyID
2.使用其他属性对
现在首先介绍下如何使用monkeyID来识别,使用monkeyID几乎可以识别所有的flex元素。MonkeyID,在以前的版本中叫automationID,是使用automation tree来定位元素的。
MonkeyID的格式:automationowner.classname.number
解释一下,automationowner是父类的名字,classname是该元素的类名,number是该元素在父类下的序数值,默认从1开始,这个也可以从flexmonkey的最新产品看出来,monkeytalk与fonemonkey中,monkeyID的产生就是以#1开始,第一个同类元素是#1,第二个是#2,以此类推。
如果两个元素拥有同样的automationName和id,默认flexmonkey将以automationName来识别元素,这样就会出现识别不到的情况,在这个情况下,因为工具录制不能产生monkeyID,我们就需要手工编写脚本,按照monkeyID的格式,强制使用monkeyID来识别元素。
另外,如果元素有以上三个属性外的唯一属性值,也可以修改下录制的脚本,使用唯一属性值来识别元素。但是这里需要注意,flexmonkey只能使用一个属性对来识别元素,该工具还做不到使用多个属性对识别。
Verify Expression
VerifyProperty见验证表格所选中的第一行数据的属性的用法
录制完成后可以选择回放,可以导出JUNIT, 选择导出时需注意, 选择菜单怎么自动化测试1. 以上都准备就绪后, 打开网站录制操作, 录制完成后导出JUNIT生成java文件,2. 测试环境搭建:准备如下文件列表:JDK5selenium-server-standalone-2.24.1.jaruser-extensions.jsselenium-java-2.24.1.zip准备测试服务器: windows环境,安装好JDK, linux需运行在窗口模式下, 还需装有firefox浏览器编译及运行TestCase服务器: windows 或者 linux3. 启动服务器:启动selenium-server输入: java -jar selenium-server-standalone-2.24.1.jar -userExtensions user-extensions.js4. 测试端TestCase代码需注意的地方: 如下:Flexmonkey提供的简单的API介绍1.验证属性VerifyProperty 标签的使用:例子:if (proc.getBoolean("isFlexMonkey", new String[] {"<VerifyProperty value=\"grid\" propertyString=\"dataProvider.length\" expectedValue=\"1\" propertyType=\"equals\"/>"})) break;value: 界面UI中Flex 元素的ID.propertyString: 界面UI中Flex 元素的属性.expectedValue: 期望值.propertyType: 对比类型.2.验证表格VerifyGrid标签的使用:assertEquals("err", "OK,w", proc.doCommand("getFlexMonkeyValue", new String[] {"<VerifyGrid value=\"grid\" row=\"0\" col=\"1\"/>", ""}));3. 提一下Selenium在以上代码中用到两种Selenium提供的命令如下:proc.getBoolean(String commandName, String[] args);返回验证后的Boolean值.proc.doCommand(String commandName, String[] args);返回所定位的元素的String类型的值.5. 现在你可以尽情的写你的前置条件里的数据, 和做完操作后断言所期望的值.
附录说明:
1.FlexMonkey官方文档: 官方网站很难打开,提供以下链接.
http://note.youdao.com/share/?id=a5a4881475b3864f459776fdea34d31d&type=note
2.扩展组件加入自动化测试:
http://www.infoq.com/cn/articles/flexmonkey-deep-dive
3. Selenium学习的文档:
<selenium私房菜>
http://www.cnblogs.com/hyddd/archive/2009/05/30/1492536.html
4.Flex持续集成:
http://note.youdao.com/share/?id=e73ab7201fd66c637887bacf655a76dc&type=note