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源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- 低配NOSQL
东西写的太简单了 都不好意思说是NOSQL 其实就是STL 的map容器记录了写入的信息 解析了下数据仅此. 分析的时候想了很多 比如学习redis的自写hash,动态调整hash表容量. 比如右值或 ...
- 主频3.0 1g内存是什么意思
我会讲解一些常用的计算机应用知识.希望大家多多支持,稍后更新,我的技术水平在国内属于顶尖的水平,不服来战...稍后更新...
- at java.net.InetAddress.getLocalHost(InetAddress.java:1475)
今天在centos 安装hadoop安装完成后执行wordcount的时候报如下错误: at java.net.InetAddress.getLocalHost(InetAddress.java:14 ...
- jquery插件解读之tabs
先上代码,符简略关键性说明: /** * jQuery EasyUI 1.4.1 * * Copyright (c) 2009-2014 www.jeasyui.com. All rights re ...
- MYSQL 问题小总结
mysql 问题小总结 1.MySQL远程连接ERROR 2003(HY000):Can't connect to MySQL server on ‘ip’(111)的问题 通常是mysql配置文件中 ...
- how to enable the Accessibility in the app
第一部分 先要装一个accchecker,全称是 UI Accessibility Checker .下载地址: http://acccheck.codeplex.com/ 装了之后 用这个工具可以 ...
- Django入门与实践-第25章:Markdown 支持(完结)
http://127.0.0.1:8000/boards/1/topics/102/reply/ 让我们在文本区域添加 Markdown 支持来改善用户体验. 你会看到要实现这个功能非常简单. 首先, ...
- ILA用法
Ila在使用过程中Capture mode可选, write_hw_ila_data 把从ILA中读出的数据写入文件中. Syntax write_hw_ila_data [-force] [-csv ...
- struts2从浅至深(六)contextMap(存取数据)
A:存数据 1.利用ActionContext存数据 这种方式最简便 这是一个购物车案例 把查询来的数据放入到Session中存储起来 2.利用valuestack值栈存数据 把查询出来的数据放入到值 ...
- HDU 3455 Leap Frog 2016-09-12 16:34 43人阅读 评论(0) 收藏
Leap Frog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...