1、Download Filters功能 帮助在回放脚本的时候对某些特定的访问进行屏蔽,解决页面读取中跨服务器带来数据影响的问题。 过滤规则中有3中策略,即URL、Host、HostSfx 区别于: URL是对一个固定地址的,无法通配,只能写一个固定的地址。 Host是主机,你写一个主机名就可以过滤所有这个主机名下的内容。 HostSuffix是加强,只需要写服务器的域名后端,就能过滤所有前面的内容。 eg:如果写URL过滤为:http://bbs.51testing.com,那么在LR中直接读取这个地址不成功 如果写Host为bbs.51testing.com,那么访问这个地址下的所有东西不会成功 如果写hostsfx为51testing.com,那么访问www.51testing.com也不会成功
2、Data Format Extensions:指是否在回放脚本的过程中对返回的数据包进行DFE格式转化,如果需要使用新的关联函数该功能选项需要打开。
3、参数化的步骤: 确定需要参数化的内容->选中需要参数化的内容->使用右键菜单中的Replace with a Parameter 将选中内容替换为参数->Parameter List中设置参数值和参数更新方式->通过回放后的日志验证参数取值
4、lr_eval_string("{参数名}"); 该函数可以从参数中取得对应的值,并且转化成一个字符串,可以通过lr_output_message()函数输出到日志中。 eg:lr_output_message(lr_eval_string("{param}"));
5、lr_save_datetime("%Y-%m%d %H:%M:%S",DATE_NOW+TIME_NOW,"datetimes"); lr_save_datetime("%Y-%m-%d",DATE_NOW,"times");
6、User Defined Function可以通过lr_load_dll()函数来实现调用外部dll扩展脚本的功能。 lr_load _dll("user32.dll"); eg: lr_load_all("user32.dll"); messageBoxA(NULL,"This is the message body","mesage_caption",0); 首先创建的dll必须遵守一下规则: -declspec(dllexport)char *<functionName>(char *,char *)
7、lr_convert_string_encoding函数进行编码转换。 参数并不是能写在LoadRunner函数中的任意位置,如果想要实现对无法直接参数
化的部分进行参数化,Web_link()函数中的step部分可以这样写: web_link(lr_eval_string("{param}"),"TEXT={param}",LAST); lr_eval_string("{param}+{param}={param2}"); *获得一个字符串的第一个字母的ASCII码可以写成: lr_eval_string("{param}")[0]; 这种写法会返回param参数中的第一个字母的ASCII码
8、 参数的定义方法:lr_save_string("http://www.51testing.com","website"); web_url("51testing","URL={website}",LAST); 可以使用lr_free_parameter()将这个参数的值释放掉,减少对内存的占用。
9、 可以使用lr_save_int()和lr_save_datetime()写入数字和日期的参数。
10、 使用lr_param_sprintf()函数把一定格式写成参数: eg: lr_param_sprintf("LOG_NAME_PARAM","log_%d.%s",index,suffix,1000);
11、 为一个参数中存放的数字做加1操作,那么可以使用这个函数: lr_param_increment();
12、 定义并释放变量 Buf=(char*)malloc(1024*sizeof(char))); free(Buf);
13、 参数数组 lr_paramarr_idx() lr_paramarr_len() lr_paramarr_random() 参数数组必须满足以下两个条件: 参数必须都是以相同的名字开头的,后接下画线加数字的方式顺序赋值。 参数数组必须有一个“参数名_count”的参数来记录数组的长度。 eg: lr_save_string("www.google.com","website_1"); lr_save_string("www.baidu.com","website_2"); lr_save_string("www.163.com","website_3"); lr_save_string("www.sina.com","website_4"); lr_save_string("4","website_count");//不能写错数据
14、取参数数组值 char * siteval; siteval=lr_paramarr_idx("website",2); 等价于: lr_eval_string("{website_2}");
15、取参数数组的长度 lr_paramarr_len():获取整个参数数组的长度。 int arrsize; arrsize=lr_paramarr_len("website"); 等价于: lr_eval_string("{website_count}")可以得到相同的结果。
16、随机读取参数数组中的一个值 char * siteval; siteval=lr_paramarr_random("website"); (谨慎使用,有些情况无法随机)
17、遍历参数数组 int arrid; for(arrid;arrid<=lr_paramarr_len("website");arrid++) { lr_output_message(lr_paramarr_idx("website",arrid)); }
18、XML在参数中的处理 XML数据可以主要用于数据操作lr_xml_get_values该函数的作用是帮助我们从一个XML格式中取出我们所需要的某个节点或者多个
节点值。 lr_xml_get_values("XML={xmlparam}", "FastQuery=/bookstore/book/title", "ValueParam=title", Last); FastQuery是说明查询节点的方式,XML=说明了被查询的XML参数名,ValueParam是指该函数查找出的值保存在title这个参数中,该函数还自带返回,所以代码可以这样写:
int gvcount; xmlstring="<?xml version="1.0" encoding="GB2312"?>...";//XMl正文略 lr_save_string(xmlstring,"xmlparam"); gvcount=lr_xml_get_values("XML={xmlparam}", "FastQuery=/bookstore/book/title", "ValueParam=title", "NotFound=continue", last); if(gvcount==0) lr_output_message("this is no value be found in the XML source"); else lr_output_message("find the value in the Xml source"); 注:NotFound=continue,该属性的作用是当无法查询到内容时不要出现error错误,继续脚本。
当我们需要多个符合条件的XML节点属性时可以这样写: gvcount=lr_xml_get_value("XML={xmlparam}", "Query=/bookstore/book/title", "ValueParam=title", "SelectAll=yes", "NotFound=continue", Last); 而在gvcount变量中存放的值为2.这个时候不能直接使用title这个参数,因为它还不是参数数组,所以需要手工编写这样的代码为这个参数补充一个参数数组格式: lr_save_int(gvcount,"title_count");
lr_xml_extract 这个函数和lr_xml_get_values返回的是节点属性值,而lr_xml_extract返回的
是XML节点。 获得id属性值的代码: lr_xml_extract("XML={xmlparam}", "Query=/bookstore/book/id", "NotFound=continue", "XMLFragmentParam=Result", Last);