转:检查点(web_reg_find函数详解)

LR检查点

  设置检查点的目的不只是为了验证我们的脚本没有错误,而更重要的是一个规范问题,如何使得测试结果更具有说服力,因此建议所有的测试脚本中都添加检查点设置

一、设置检查点的方法

1.将脚本切换到树结构,在page view页面上找到你要check的文本内容, 并执行鼠标右键,选择Add a text check.

2.将脚本切换回代码界面,在光标闪烁的上行,手动添加如下的代码

web_reg_find("Text/IC=Payment Details", "SaveCount=para_count", LAST);

这里是要运行的页面脚本

if (atoi(lr_eval_string("{para_count}"))>0)        //验证是否找到了页面上的要检查的字符串

 lr_output_message("Pass!");

else

  lr_output_message("Failed!");

注意:

l   “Payment Details” 为你要检查的文本;

l   脚本执行到此处,不管页面上是否存在你要检查的字符串,脚本都不会报错,而是执行下去。

l   此段代码将找到的你要检查的字符串的个数,存为一个参数。 然后在页面代码的后面,通过检查这个参数的值是否大于0,来判断是否找到了你所要检查的字符串。

l   这里的测试结果均以200状态码返回,其失败的结果将在分析报告中进行分类标识。

//atoi()函数的作用是将一个ASCII字符串转换为整型

//lr_eval_string()函数作用是取得参数值,将字符串变量中的参数值替换为当前的参数值并将这个字符串返回

3. 光标停留在要插入函数的位置,在INSERT菜单中,选择new step,在列表中选择或查找要插入的函数,根据提示填写必要的参数;

二、设置检查点时要注意(主要针对web_find()函数的相关设置)

1.在使用检查点的时候我们还需要注意一些问题,通常我们都要设置一些中文检查点,但是LR默认不支持,如果你设置了中文检查点而报错,那你就应该注意了,在录制脚本的时候选中设置的UTF-8选择,去掉勾,如下图所示:

2.使用文本检查点时,由于检查点功能会耗费一定的资源,因此LoadRunner默认关闭了对文本及图像的检查。要想开启检查功能,必须修改运行时的配置Run-time Setting,需要设置启用图片和文本检查点,如下图所示:

系统默认是不勾选该选项的。

三、检查点脚本运行中经常出现的错误

1.错误代码Error -27257: Pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of iteration number 1

原因:web_reg_find的位置错了, 你将它放在某个action的最后,它的后面是 return 0, 所以出错了

解决方法:web_reg_find位置放错了,应该放到请求页面前面。

2.错误代码:Action.c(27): Error -26366: "Text=ABC" not found for web_reg_find  [MsgId: MERR-26366]

出现该问题时,需要检查web_reg_find是否放在查找内容的前面。

注:一定注意函数只放在要检查的URL前面,不要随便再往前面放置。

3. 错误代码: Action.c(22): Error -27191: "web_image_check" failed (0 occurrence(s) found.[MsgId: MERR-27191]

如果是web_find(),检查函数的位置是否在要查找内容的后面;如果是web_image_check(),查看该图片的源代码,看其是否是这个页面上的图片,很可能是图片选择错误,即所选图片不属于该页面。

四、相关函数介绍

1.         web_find()函数

web find("web_find","RighOf=a","LeftOf=b","What=name",LAST);

参数解释:"web_find"定义该查找函数的名称;“LeftOf”和“RighOf=”用来定义查找字符的左右边界;“What=”定义查找内容;

例如上述参数举例中的意思就是在页面中查找左边界为b,右边界为a,内容为name的信息;

使用该函数注意事项:该函数是在查找页面中的内容,所以要放在要查找的内容的后面;该函数只能在基于HTML模式录制的脚本中进行查找

2.         web_reg_find()函数

web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);

参数解释: Search用来定义查找范围,SaveCount定义查找计数变量名称,该参数可以记录在缓存中查找内容出现的次数,可以使用该值,来判断要查找的内容是否被找到;

例如上述参数举例中的意思就是Body中查找内容为aaa的信息,并将出现次数记录在变量ddd中;

使用该函数注意事项:该函数是在缓存中查找相应的内容,所以要放在查找内容之前;通常情况下写在如下六个函数之 前:Web_castom_request(); web_image(); web_link(); web_submit_data(); web_submit_form(); web_url();

使用技巧:在该函数的参数中有个“SaveCount”,该参数可以记录在缓存中查找内容出现的次数,我们可以使用该值,来判断要查找的内容是否被找到。

3.         web_image_check()函数

web_image_check("web_image_check","Alt=","Src=",LAST);

参数解释:“Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值;

经过测试,该函数用到查找内容前面或后面,都不影响查找结果。

五. web_find与web_reg_find函数比较

  • l  这两个函数函数类型不同,WEB_FIND是普通函数,WEB_REG_FIND是注册函数;
  • l  WEB_FIND使用时必须开启内容检查选项,而WEB_REG_FIND则不没有此限制;
  • l  WEB_FIND只能用在基于HTML模式录制的脚本中,而WEB_REG_FIND没有此限制;
  • l  WEB_FIND是在返回的页面中进行内容查找,WEB_REG_FIND是在缓存中进行查找;
  • l  WEB_FIND在执行效率上不如WEB_REG_FIND;
  • l  WEB_FIND使用时放在检查内容后面;而WEB_REG_FIND使用时放在检查内容前面。

检查点一般是在什么情况下会使用
  1.验证假设登录是否成功 
  2.验证页面跳转是否正确

附录:实例详解

代码一:

web_reg_find("Text=Payment Details",LAST);

代码思路:

1."Payment Details" 为你要检查的文本;

2. 脚本执行到此处,若在页面上找到了这几个字符串,那脚本继续执行下去;若没有找到,脚本将在此报错并且结束。

代码二:

web_reg_find("Text=Payment Details", "SaveCount=para_count", LAST); //check 的函数

web_submit_form("reservations.pl_2", //要check的页面的录制时的代码

"Snapshot=t22.inf",

ITEMDATA,

"Name=outboundFlight", "Value=003;0;06/23/2007", ENDITEM,

"Name=reserveFlights.x", "Value=61", ENDITEM,

"Name=reserveFlights.y", "Value=2", ENDITEM,

LAST);

if (atoi(lr_eval_string("{para_count}"))>0) //验证是否找到了页面上的要检查的字符串

  lr_output_message("we find the string!");

else

  lr_output_message("sorry,don't find the string!");

代码思路:

1."Payment Details" 为你要检查的文本;

2. 脚本执行到此处,不管页面上是否存在你要检查的字符串,脚本都不会报错,而是执行下去。

3. 此段代码将找到的你要检查的字符串的个数,存为一个参数。 然后在页面代码的后面,通过检查这个参数的值是否大于0,来判断是否找到了你所要检查的字符串。

代码三:

A. web_reg_find("Text=Payment Detdils", "Fail=NotFound",LAST);或者

B. web_reg_find("Text=Payment Detdils", "Fail=Found",LAST);

代码思路:

1."Payment Details" 为你要检查的文本;

2. 若是A代码:脚本执行到此处,若没有找到check的字符串,脚本将FAIL, 并且停止执行下去。反之,则一直执行下去。

3. 若是B代码:脚本执行到此处,若找到check的字符串,脚本将FAIL, 并且停止执行下去。反之,则一直执行下去。

代码四:

在LoadRunner中,大小写是敏感的,甚至在被检验的值中。所以上面的脚本会因为大写字母的原因,不会识别“Welcome”的。所以Steve Cheney 建议使用“IC”忽略大小写的文字标志:
 web_reg_find("Text/IC=Welcome",LAST);

loadrunner12-错误 -26366: 找不到 web_reg_find 的“Text=19728.00”的更多相关文章

  1. java8入门 错误:找不到或者无法加载主类

    如果你也遇上的这个问题,但是如果你的Java版本不是6以上,这个解决方案可能就不适合你... 最近在跟着李兴华老湿的视频<<编程开发入门Java 8>>的学习Java... 但 ...

  2. atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc

    atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc 1.1. 修改此java文件,让他启动编译,还是不能生成了新的class, 1.2. 估计ide调试锁死class ,查看de ...

  3. 使用xpath时出现noDefClass的错误(找不到某个类)

    今天继续封装下jdom 发现jdom引用了个jaxen的jar 如果不导入这个库,使用xpath时出现noDefClass的错误(找不到某个类) 到csdn上 下了个 ok 同时研究了下List的to ...

  4. 错误:找不到类org.springframework.web.context.ContextLoaderListener

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...

  5. 1>MSBUILD : cordova-build error BLD401: 错误: BLD00401: 找不到模块“C:\Users\z-pc\AppData\Roaming\npm\node_modules\vs-tac\app.js”。请转到“工具”-->“选项”-->“Apache Cordova 工具”-->“Cordova 工具”-->“清除 Cordova 缓存”,然后尝试重新生成

    1>------ 已启动全部重新生成: 项目: BlankCordovaApp2, 配置: Debug Android ------1>  Your environment has bee ...

  6. EditPlus提示错误:找不到或无法加载主类

    问题:EditPlus提示错误:找不到或无法加载主类. 原因:换了另外一台电脑,忘了什么时候,环境变量被误删了. 解决问题: 1.检查文件名和public修饰的类名是否一致. 2.文件查看时,有没有隐 ...

  7. 浏览器打开aspx文件 ,提示:XML 解析错误:找不到根元素

    在使用VS2013这个IDE创建aspx文件后,在浏览器打开后居然发现了以下错误:XML 解析错误:找不到根元素         详细查看里面的信息,发现了这么一个链接位置:http://localh ...

  8. 解决Eclipse中“诡异”的错误:找不到或无法加载主类

    记录下来遇到的(问题,解决方法),是更有效的解决问题的方式.(原谅我领悟的太晚与懒,从此用更有意义的方法,做一个更有意义的人) 因为遇到了多次,参考同一个方法,原文连接:https://blog.cs ...

  9. asp.net mvc 碰到 XML 解析错误:找不到根元素 位置

    具体报错信息如下: XML 解析错误:找不到根元素 位置:moz-nullprincipal:{4a1d2b7c-6d07-468e-9df9-2267a0422c93} 行 1,列 1: 网上给出的 ...

随机推荐

  1. 关于Markdown的空行

    如何在Markdown中输入一个空行? 最简单的做法是加一个<br>(html)或者<br />(xhtml),因为Markdown完全兼容html语法,但有的编辑器会支持,譬 ...

  2. java Annotation的应用

    一.Annotation 示例 Override Annotation @Override public void onCreate(Bundle savedInstanceState); 二.Ann ...

  3. Exce信息提取

    Exce信息提取 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub 信息汇总( ...

  4. Hibernate学习4—关联关系一对多映射

    一.班级学生一对多映射实现(单向) Class 1 * Student 一对多 在学生多的一方,配置一的对象:   com.cy.model.Class: package com.cy.model; ...

  5. Maven assembly插件进行自定义构建

    众所周知,Maven是一个约定优于配置的java构建工具,通常我们只需要定义非常少的内容,就可以根据package标签属性来构建生成的jar, war包的相关内容. 如果想要对maven中依赖的内容一 ...

  6. 3dmax卡通渲染插件pencil+渲染线框

    转自:http://www.cr173.com/soft/179512.html http://www.psoft.co.jp/jp/ 官网和YTB有 2代的视频教程,平均每个2分钟长,无解说,是日文 ...

  7. 【洛谷】P2904 [USACO08MAR]跨河River Crossing(dp)

    题目描述 Farmer John is herding his N cows (1 <= N <= 2,500) across the expanses of his farm when ...

  8. Web api help page error CS0012: Type "System.Collections.Generic.Dictionary'2错误

    1.在asp.net Boilerplate项目中,Abp.0.12.0.2,.net framework4.5.2.下载后添加了webApi的helpPage功能,调试出现错误. dubug : a ...

  9. Java四舍五入 保留小数

    java 四舍五入保留小数   // 方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale( ...

  10. Array 数组类

    除了 Object 之外, Array 类型恐怕是 ECMAScript 中最常用的类型了.而且,ECMAScript 中的数组与其他多数语言中的数组有着相当大的区别.虽然 ECMAScript 数组 ...