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源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- Picard Tools
Picard Tools - By Broad Institute http://broadinstitute.github.io/picard/command-line-overview.html ...
- sigint sigterm 有什么区别啊
SIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 ...
- KBMMW 4.6 正式版发布
喜大普奔迎新年! Merry Christmas! We are happy to announce the release of kbmMW v. 4.60.00 Professional and ...
- freeRadius与NetGear WNAP210的简使用
1.下载安装freeRadius for win 2.2 2.配置client.cnf文件 加入 client 192.168.0.0/16{ secret=1111122222 shortname= ...
- ExtJS+SpringMVC文件上传与下载
说到文件上传.下载功能,网络上大多介绍的是采用JSP.SpringMVC或者Struts等开源框架的功能,通过配置达到文件上传.下载的目地.可是最近项目要用到文件上传与下载的功能,因为本项目框架采用开 ...
- SQL 查找重复记录
CREATE TABLE product( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, Pid INT NOT NULL, Pname VARCHAR(50) ...
- 三)mybatis 二级缓存,整合ehcache
mybatis-config.xml <setting name="cacheEnabled" value="true" /> PersonMapp ...
- (网络流)ACM Computer Factory --POJ --3436
链接: http://poj.org/problem?id=3436 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82835#probl ...
- Hdu1548 A strange lift 2017-01-17 10:34 35人阅读 评论(0) 收藏
A strange lift Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tota ...
- Java菜鸟学习笔记(23)--继承篇(二):继承与组合
组合是什么 1.继承和组合都是一种随思想渗透而下的编码方式,其根本目的都是为了复用类,减少重复代码 2.要实现一个类的复用,可以分为组合语法和继承语法 3.组合就是通过将一个对象置于一个新类中,将其作 ...