FlexMonkey实战
文章来源: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,到此软件准备完毕。为缓解蜗牛速度,
- 下方附件提供下载已上传至有道:


点击FlexMonkium, 弹出MonkeyConsole配置地址:
到此处FlexMonkium软件配置完成, 现在还是不能录制Flex页面, 此处需要加上monkey和adobe提供的类库,在FlasHBuilder编译参数里加上-locale en_US -include-libraries "../lib/automation_monkey4.x.swc" "${flexlib}/libs/automation/automation_spark.swc" "${flexlib}/libs/automation/automation.swc" "${flexlib}/libs/automation/automation_agent.swc" "${flexlib}/libs/automation/automation_dmv.swc"

自动化测试之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
FlexMonkey实战的更多相关文章
- SSH实战 · 唯唯乐购项目(上)
前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...
- GitHub实战系列汇总篇
基础: 1.GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9 http://www.cnblogs.com/dunitian/p/5034624.html 2.GitHub实战系 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- asp.net core 实战之 redis 负载均衡和"高可用"实现
1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...
- Linux实战教学笔记08:Linux 文件的属性(上半部分)
第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...
- Linux实战教学笔记07:Linux系统目录结构介绍
第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- failed creating java jvm.dll
启动tomcat服务时出现错误failed creating java jvm.dll的解决办法 把jdk\bin目录下的msvcr71.dll 或msvcr100.dll 复制到tomcat安装目录 ...
- exit--进程退出;wait--进程等待;execl--执行程序
函数原型:void exit(int status) 参数说明:退出状态. 函数原型:pid_t wait(int *status) 头文件:#include<sys/types.h>,# ...
- JavaScript 闭包的例子
例子出自<<JavaScript权威指南>>, 加上个人的理解和总结, 欢迎交流! /********************************************* ...
- 2018.07.17 洛谷P1368 工艺(最小表示法)
传送门 好的一道最小表示法的裸板,感觉跑起来贼快(写博客时评测速度洛谷第二),这里简单讲讲最小表示法的实现. 首先我们将数组复制一遍接到原数组队尾,然后维护左右指针分别表示两个即将进行比较的字符串的头 ...
- 实现WIFI MAC认证与漫游
前言 单位里有10来个网件的AP(WNAP210),需要对接入端(主要是手机)进行MAC认证,原来采用AP本地MAC认证,但是人员经常变动(离职),另外人员的岗位(流水线)也经常调整,这样就需在变动后 ...
- authentication 和 authorization
单词 词性 解释 authentication n. 认证 authentic adj. 真实的 authorization n. 授权 authorise vt. 授权 authentication ...
- iOS平台设置系统状态栏(通知栏、顶部状态栏)样式背景颜色或透明
5+App开发 状态栏 配置系统状态栏样式 iOS平台可支持对系统状态栏样式的配置,在应用manifest.json文件的plus->distribute->apple下添加UIStatu ...
- new Date()之参数传递
JavaScript下,new Date([params]),参数传递有以下五种方式: 1.new Date("month dd,yyyy hh:mm:ss"); 2.new Da ...
- POJ3258 River Hopscotch 2017-05-11 17:58 36人阅读 评论(0) 收藏
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13598 Accepted: 5791 ...
- Paul Simon -- Duncan
Paul Simon -- Duncan (London,January 1972) Couple in the next roomBound to win a prizeTheyve been go ...