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








自动化测试之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源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- 1、wei-d-s嵌入式与PC区别,LED等的点亮以及调用C函数
tiny6410之点亮Led灯: .global _start _start: ldr r0,0x70000000 //目的是把外设基地址告诉cpu orr r0,r0,#0x13 mcr p15,0 ...
- Spring Boot集成Quartz注入Spring管理的类
摘要: 在Spring Boot中使用Quartz时,在JOB中一般需要引用Spring管理的Bean,通过定义Job Factory实现自动注入. Spring有自己的Schedule定时任务,在S ...
- Silverlight StoryBoard 动态切换ImageSource
Silverlight StoryBoard 动态切换ImageSource <StackPanel Grid.Row="1" Orientation="Horiz ...
- visual studio 各种错误汇总
----不定时更新 vs2012 智能提示消失解决办法 一般你可以重启vs就可以解决问题,最蛋疼的是你重启也没用.只能重置,再不行就重装vs,再不行你就重装系统......扯淡了... 重置Visua ...
- SQA计划和系统测试规程
SQA计划和系统测试规程 一.SQA计划 1.软件工程 我们小组所做的项目是图书馆管理系统.我们要准确的了解此软件的需求(能够注册登录,查询图书,借书,还书,查看借阅记录等),在此前提进行建模,基于场 ...
- 使用eclipse创建android项目的时候为什么会生成两个项目
使用eclipse创建android项目的时候为什么会生成两个项目 问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创 ...
- 36 The Benefits of Marriage 结婚的益处
36 The Benefits of Marriage 结婚的益处 ①Being sociable looks like a good way to add years to your life.Re ...
- <%@ include file=""%>与<jsp:include page=""/>
https://www.cnblogs.com/sharpest/p/6117629.html
- Spring Boot的自动配置的原理浅析
一.原理描述 Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器. 二. ...
- Linux学习--2
字符串 字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似 单引号字符串的限制:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的:单引号字串中不能出现单引号(对 ...