Selenium IDE 进阶部分-Rollup策略

    资源推荐:

    视频资源: 软件测试相关系列视频

     社区资源: 自动化测试交流群

Selenium IDE Rollup策略

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

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

Selenium IDE 进阶部分-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,下面对这几个属性一一介绍:

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

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

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

CommandMatchers,该参数用于使用Selenium IDE中应用组策略功能,也就是Selenium IDESelenium IDE 进阶部分-Rollup策略,只有当定义了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

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

其中当定义rollupargs的值为空时,如,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语言,就能轻松灵活运用。

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/193690.html

(0)
上一篇 2021年11月15日
下一篇 2021年11月15日

相关推荐

发表回复

登录后才能评论