Selenium IDE 进阶部分-Rollup策略

Selenium IDE Rollup策略

为什么需要使用Rollup策略呢?

使用Rollup策略可以使你的测试脚本看起来更加简洁,测试命令集合重用性更强,使用Rollup可以让你的脚本看起来像下面代码一样:

其中,rollup命令中loggincommands是一个selenese指令集合,包含了登录部分脚本指令,通过这种方式,可以将任何在多脚本中重复的部分提取出来,以供更多的测试脚本重复使用,这样做有三大优势:

§  脚本简洁,通俗易懂。

§  公共部分selenese命令集合得到了最大限度的重用性。

§  提供了单点访问入口,一处修改,处处使用的效果。

下面我们看一下如何来定义一组rollup策略,定义rollup需要新建一个.js为结尾的javascript文件。


var manager = new RollupManager();

manager.addRollupRule({ ... });

manager.addRollupRule({ ... });

...

RollupManager作为rollup策略实现的管理对象,我们可以向rollup manager中添加多组rollupRule,只需要简单的使用RollupManager#addRollupRule(Object)方法就可以完成rollup策略的添加。

添加完rollupRule之后,我们再来看一下如何定义rollup对象:

manager.addRollupRule({
	name: 'logincommands',
	description: 'register & login into newtours.com',
	args: [
		{
			name: 'email',
			description: 'register one user account, used it just for the identifier.',
			exampleValues: ['aa', 'bb', 'cc']
		}
		,{
			name: 'passwd',
			description: 'register one user account, used it just for the identifier.',
			exampleValues: ['122', '333', '222']
		}
	], 
	commandMatchers: [
		{
			command: 'type'
			, target: 'id=email'
			, updateArgs: function(command, args) {
				args.email = command.value;
				return args;
			}
		}
		, {
			command: 'type'
			, target: 'name=password'
			, updateArgs: function(command, args) {
				args.passwd = command.value;
				return args;
			}
		}
		, {
			command: 'type'
			, target: 'name=confirmPassword'
			, updateArgs: function(command, args) {
				args.passwd = command.value;
				return args;
			}
		}
		, {
			command: 'clickAndWait'
			, target: 'name=register'
		}
	],
	getExpandedCommands: function(args) {
		var commands = [];

		commands.push({
			command: 'type'
			, target: 'id=email'
			, value: args.email
		});
		commands.push({
			command: 'type',
			target: 'name=password',
			value: args.passwd
		});

		commands.push({
			command: 'clickAndWait',
			target: 'name=register'
		});
		return commands;
	}
});

以上代码片段是一个完整的Rollup策略定义,在rollup对象中包含多个属性:name, description, args, commandMatchers, getExpandedCommands,下面对这几个属性一一介绍:

Name:rollup策略的名字,需保证在rollup manager中唯一。

Description: 对该rollup策略的描述,该描述作为帮助文档显示给使用者。

Args: array类型,可以有多组args,args用于调用者传入rollup策略的参数,比如:,这里调用logincommand时传入了两个参数,也就对应了args数组中存在两个args定义,在args定义中包含三个参数:name(参数名), description(参数描述), exampleValues(没有实际意义,为用户展示参数值类型),Args中的定义的变量应用于两个位置,commandMatchers中的updateArgs方法,以及getExpandedCommands方法。

CommandMatchers,该参数用于使用Selenium IDE中应用组策略功能,也就是Selenium IDE中,只有当定义了commandMatchers时,这里才可用。

commandMatchers用于匹配脚本中符合commandMachers定义的规则的selenese命令,并一键生成rollup命令。

                  {
                          command: 'type'
                          , target: 'id=email'
                          , updateArgs: function(command, args) {
                                   args.email = command.value;
                                   return args;
                          }
              }

commandMatchers中可以定义多组command,每个command中可以包含command, target, updateArgs若干参数。

        Command: 即selenese命令,也就是该command matcher所要匹配的命令。

Target: 即元素定位器,这里可以使用正则方式匹配多种target,如果使用正则也就是该command matcher可以匹配多个selenese命令,当然前提是同一个类型的command。

UpdateArgs:Function, 函数的实现用于动态接收rollup调用者穿来的参数及参数值,并动态的根据自定义规则更新args中定义的变量,注意,这里只是根据调用者传过来的参数值动态修改args变量值,最后将args对象作为方法返回值return.

其中当定义rollup时args的值为空时,如,args:[],此时updateArgs定义无效。

GetExpandedCommands

getExpandedCommands参数用于定义该rollup命令所包含的Selenese命令集合,也就是在运行时真正需要执行的命令

该参数定义为一个带有args参数的函数,且该函数返回值为数组,数组包含所有需要执行的命令集合。

               commands.push({
                          command: 'type',
                          target: 'name=password',
                          value: args.passwd
              });

数组元素中包含三部分,即selenese指令的三部分,分别为command, target, value, 其中value可以通过用户调用rollup命令时传入的参数进行动态更新。

总结,rollup策略是一个selenium ide提供的一个非常强大的功能,使用rollup策略有三大好处,掌握rollup策略只需要脚本开发人员掌握javascript语言,就能轻松灵活运用。

原文地址:http://blog.51cto.com/shareku/2091107

时间: 2024-10-05 06:42:14

Selenium IDE 进阶部分-Rollup策略的相关文章

Selenium IDE 进阶部分-UI-Element

Selenium UI-Element 介绍 Selenium UI-Element是关于selenium ide中可以将webpage中的元素抽象到对象中的特性,将页面元素抽象到对象中,以方便多个脚本重复利用,并支持在selenese脚本中使用ui locator 方式定位页面元素,它给ui定位器提供了可读性较好的元素定位标识符. 相关术语 Page         指一个完整的页面,或一个完整的DOM对象. Page element    指页面中任何可交互的页面元素,可以是DOM的node

菜鸟学自动化测试(一)----selenium IDE

2011-10-23 23:37 by 虫师, 29122 阅读, 13 评论, 收藏,  编辑 ----//前言 对于,我们做测试的新手来说,自动化测试一直是一个比较高级的领域,当然是相对于手工测试来说.最近,对自动化测试产生了兴趣.不,具体点应该是对selenium工具产生了兴趣.为什么不是QTP呢,之前,QTP也有学习,后来还买了本<QTP自动化测试进阶指南>,看了几天,不知为什么看不下去.嗯!我一直偏爱于开源的技术和工具.最早用LR做性能测试,后来发现了JMeter那个小工具后,基本上

【Selenium】3.介绍Selenium IDE

本文供学习交流之用,没有商业用途,没有盈利. 完全是我自己为督促自己学习而翻译的.翻译的不好,见谅.来源于:http://www.guru99.com/introduction-selenuim-ide.html 好长超长!我这啥时候才能翻译完呀!Damn it!I mean it! 介绍Selenium IDE Selenium IDE 是工具套件中最简单的哦!通过录制并重播功能,可以快速创建测试用例.这个跟QTP中的对应部分类似.不用怎么费劲就能学会. 因为它很简单,IDE只能用来分析元素的

Selenium IDE 基础教程

1.下载安装 a 在火狐浏览其中搜索附件组件,查找 Selenium IDE b 下载安装,然后重启firefox 2.界面讲解 在菜单-工具中找到Selenium IDE 打开Selenium IDE ,也可以将Selenium添加到快捷菜单中,Firefox的菜单定制很容易实现. 1 菜单栏 2 被测地址 3 快捷按钮 4 案例列表 5 测试脚本命令列表 6 脚本通过.失败的个数 7 选中命令的参数 8 日志.参考等,其中rollup表示捆绑规则,这个高级功能允许一连串的命令组合成一个动作.

selenium IDE 录制脚本入门

之前一直用robot framework做web端的自动化,那命令,那xpath找的我心累.. 终于发现原来还有seleniun IDE这等好用的工具... 顺便想学习一下用java selenium写一点自动化(扯远了) 一.首先下载个firefox(firebug真心好用) 二. 到官网下载selenium IDE,http://seleniumhq.org/download/,如果你运气好,直接就可以安装成功了....我是一直点下载没有反应...: 选择firefox的附加组件管理器,搜索

Selenium IDE 简单元素选择器

点击链接加入群[悦分享测试联盟]:https://jq.qq.com/?_wv=1027&k=5FiMKHH 元素定位选择器 简介 对于大多数Selenese命令来说,都需要提供一个target参数,这个target参数目的是为了唯一的去定位web应用中的指定元素的内容,我们称之为"locator",locator的表达形式有多种,本节内容会详细阐述各种类型的locator的信息. Locator表达式结构:locatorType=location,在某些特殊情况下,locat

Selenium私房菜系列4 -- Selenium IDE的使用【QQ】

前面说过,Selenium IDE是Firefox的一个插件,是可以进行脚本录制以及案例转换,所以Selenium IDE+Firebug会成为你日后写测试案例的两大助手(IE下可以使用Selenium Core+IEDevelperToolBar). Selenium IDE下载:http://seleniumhq.org/download/ Firebug下载:https://addons.mozilla.org/firefox/addon/1843 下面将演示Selenium的使用: 1.

解决火狐浏览器安装不上Selenium IDE插件“此附加组件无法安装”

(摘自http://blog.sina.com.cn/s/blog_14eea47cb0102w25n.html) 解决火狐浏览器安装不上Selenium IDE插件“此附加组件无法安装” 1.打开火狐浏览器,安装插件有如下提示 2.浏览器输入“about:config”,提示这样可能会失去质保,点击”我保证会小心“ 3.找到此项 4. 双击,即可改为关闭,这样就可以安装插件了

自动化测试——Selenium IDE处理iframe问题

在利用Selenium IDE进行录制与回放的过程中,遇到页面含有iframe时,需要通过selectFrame命令,进入到iframe中方能进行相关操作. 在iframe中完成操作后,需返回上一级框架或顶级框架.relative=top,表示返回顶级框架:relative=parent,表示返回上一级框架:也可以通过index=0来表示第一个框架.