liulicongcong 发表于 2007-8-9 14:18:59

LR录制弹出的对话框如何做文字验证?

我录制了一个审核的过程,即先查询然后审核,审核成功会弹出对话框,见图,我想加个检查点来验证是否真的审核成功了,于是我在审核action中加了如下两段代码:
   在web_submit_data前我加了
   web_reg_find("Text=Text=审核成功,如需要继续审核请重新查询后再审核!",

            "SaveCount=Check_Count",

            LAST);
   在web_submit_data之后我加了
    lr_output_message("value=%s",lr_eval_string("{Check_Count}"));


    if (atoi(lr_eval_string("{Check_Count}")) > 0){

            lr_output_message("check successful");

            }

      else{

            lr_error_message("check failed");

            return(0);

      }

我用单步调试执行脚本,可是结果是:
check.c(10): Registered web_reg_find successful for "Text=Text=审核成功,如需要继续审核请重新查询后再审核!"       
check.c(10): web_submit_data("checkExamData.aspx_3") was successful, 400853 body bytes, 222 header bytes       
check.c(1476): value=0
check.c(1487): Error: check failed
也就是说没有识别出来这个对话框,为什么会这样呢,我是用url-based方式录制的,web_reg_find均适用Html-based和url-based,为什么是这样的结果呢,请各位帮忙,急呀.如果不用这种方法有什么其他方法可以达到检验是否真正审核成功的目的呢?


谢谢了

shanxi 发表于 2007-8-9 14:21:00

你这个框是MessageBox

LR检查点当初的Design是包括了这个的Check吗?

liulicongcong 发表于 2007-8-9 16:20:13

这个框是javascript写的,lr识别不出吗?

liulicongcong 发表于 2007-8-9 16:21:21

有没有其他办法呢?比如写函数,我是初学者,对代码很不熟悉,真不知道该怎么办了

liulicongcong 发表于 2007-8-9 16:22:54

查看源文件,是这样的
<SPAN id="JSPanel"><script language='JavaScript'>alert('审核成功,如需要继续审核请重新查询后再审核!');</script></SPAN>

shanxi 发表于 2007-8-9 16:31:51

上面看错了

LR Check的机制我想是匹配html源码,我想你这个查查相关函数,写正确就能通过。

LoadRunner添加验证点:脚本录制好后,在需要的地方加上验证点,来检测脚本是否执行成功。以登陆操作来说,在提交登陆的脚本后面,右击鼠标,选择Insert—NewStep,在出现的对话框中选择Web Checks—Text Check,进行文字验证,查找退出这两个字是否出现。如果出现就说明登陆成功。

web_reg_find
语法:int web_reg_find (const char *attribute_list, LAST);
参数:1、attribute_list:
通过Name=Value对来传递参数。例如“Text=string”。Text,TextPfx,TextSfx三个必须有一个出现。其他的属性是可选的。
a)Text:要搜索的字符串,字符串必须非空,以NULL结尾。可以使用text flags自定义搜索字符串。
b)TextPfx:要搜索的字符串的直接前缀。
c)TextSfx:要搜索的字符串的直接后缀。
d)Search:搜索的范围。可选的值是:Headers、Body(在请求体中搜索)、Noresource (仅仅在HTML请求体中搜索,不包括头和资源)、ALL(在请求体、头和资源中搜索),默认值是“BODY”。
e)SaveCount:匹配的个数。
f)Fail:设置函数检查在什么状态下失败。
g)ID:日志文件中标识此函数的一个字符串。
h)RelFrameId:相关联的FrameId。注意:此参数在GUI级别的脚本中不受支持。
2、LAST:属性列表结束的标记符。
返回值整型。
成功时返回LR_PASS(0),失败时返回LR_FAIL (1)。
说明web_reg_find属于注册函数,注册一个在web页面中搜索文本字符串的请求,在接下来的Action(象web_url)类函数中执行搜索。
通过查找期望的字符是否存在来验证是否返回了期望的页面。例如,通过查找“Welcome”来检查主页是否完全打开了。也可以查找“Error”检查浏览器是否发生错误。还可以使用此函数注册一个请求来统计特定字符串出现的次数。
如果检查失败,在接下来的Action类的函数中会报告错误。此函数仅仅注册请求,并不执行。函数的返回值只表明注册是否成功,并不表示检查的结果。
此函数不仅能够查找text,还能查找到围绕着text的strings。不要同时指定text和前缀后缀。
Fail,处理选项,可以是“Found或“NotFound”。默认是“NotFound”。
“Fail=Found” 指示当对应的字符找到时,函数检查失败。例如,查找单词“Error”,如果找到了,说名web请求没有成功,你想把函数检查设置为失败。
“Fail=NotFound”指示当对应的字符找不到时,函数检查失败。如果查找的是web请求成功时出现的字符串时,需要使用NotFound。
SaveCount参数指示保存到参数中的匹配的字符串的个数。使用这个属性,需要指定“SaveCount=param”。检查操作被执行后,param
的值是null结尾的数字类型的值。
如果指定了SaveCount,且没有使用Fail参数,检查不会失败,无论需要查找的字符串是否找到。通过检查SaveCount的值确定字符串是否被找到。 如果param是0,说明没有找到对应的字符串。
如果同时指定了SaveCount和Fail,指定的错误处理选项和SaveCount协同工作。handling option specified works together with the SaveCount. Thus,如果指定了SaveCount且指定了“Fail=NotFound” ,但是字符串被找到,SaveCount被赋值为字符串出现的次数,检查成功。如果字符串找不到,SaveCount被赋值为0,检查失败(注意,参数的0值只在运行时设置中Continue on error
选中时才有意义)。
此函数在HTML-based和URL-based的脚本中都可以使用。此函数是在所请求内容到达之前注册搜索请求的,所以当所请求内容一到达后就会执行搜索,产生的脚本比较高效。

[ 本帖最后由 shanxi 于 2007-8-9 16:41 编辑 ]

liulicongcong 发表于 2007-8-10 10:58:26

我看到:如果指定了SaveCount且指定了“Fail=NotFound” ,但是字符串被找到,SaveCount被赋值为字符串出现的次数,检查成功
我试着改成
web_reg_find("Text=审核成功,如需要继续审核请重新查询后再审核!",

            "SaveCount=Check_Count","Fail=NotFound",

            LAST);
可是结果是check.c(10): Continuing after Error -26366: "Text=审核成功,如需要继续审核请重新查询后再审核!" not found for web_reg_find
单步执行,跳过web_reg_find这个函数了,为什么呢?

shanxi 发表于 2007-8-10 11:18:53

你试试去掉"Fail=NotFound",这个参数。

另外,首栏的 "Text=Text=审核成功" 看起来贴错了。

liulicongcong 发表于 2007-8-10 14:22:47

是贴错了,去掉notfound,我试了,结果返回的都是0
如果指定了SaveCount,且没有使用Fail参数,检查不会失败,无论需要查找的字符串是否找到
结果注册成功了,但是检查是失败的,没有找到,怎么会这样呢?
我检查了下脚本,点击审核按钮根本没有录制进去,在viewtree里显示的是there are no snapshots available for the current step,该任何是好呢?

shanxi 发表于 2007-8-10 14:51:39

general options->correlation->enable scripting and java applets on snapshots viewer选中,runtime settings->preferences->enable image and text check及contentcheck->enable contentcheck during replay   
已选中否?

ViewTree看不到是另一项勾选上,看论坛旧帖。

liulicongcong 发表于 2007-8-14 13:24:02

论坛旧帖??能告诉我标题是啥不?

听妈妈的话 发表于 2007-8-14 13:56:16

实在不行你就用web_reg_save_param()把alert的内容保存成参数打印出来好了。。

这个肯定没问题

liulicongcong 发表于 2007-8-14 14:05:19

我按照你所说的enable scripting and java applets on snapshots viewer选中了,enable image and text check及contentcheck->enable contentcheck during replay 也选中了,可是执行结果还是0;我把录制后的view tree图给你看下:见附件,
图1中的红色方框是审核按纽,图2是对应的server response html,红色方框是javasript的alert,可是此处没有什么返回,图3我想应该是aleart后的弹出对话框,可是见图3
我不知道检查点到底应该放在在什么位置呢?????我是放在submitdata:checkexamdata.aspx的函数前面了,是不是放错位置了?

liulicongcong 发表于 2007-8-14 14:20:32

语句怎么写?不会哦,麻烦你举个例子 吧

suoyi 发表于 2007-8-14 14:39:10

13楼,图在那里?

donglianglv 发表于 2007-8-15 09:40:16

我按照你所说的enable scripting and java applets on snapshots viewer选中了,enable image and text check及contentcheck->enable contentcheck during replay 也选中了,可是执行结果还是0;我把录制后的view tree图给你看下:见附件,
图1中的红色方框是审核按纽,图2是对应的server response html,红色方框是javasript的alert,可是此处没有什么返回,图3我想应该是aleart后的弹出对话框,可是见图3
我不知道检查点到底应该放在在什么位置呢?????我是放在submitdata:checkexamdata.aspx的函数前面了,是不是放错位置了?

liulicongcong 发表于 2007-8-15 14:22:27

忘记图了,可是如何帖图啊?

liulicongcong 发表于 2007-8-16 09:45:01

源程序中是这样的<SPAN id="JSPanel"><script language='JavaScript'>alert('审核成功,如需要继续审核请重新查询后再审核!');</script></SPAN>
录制后sever response对应该句的是<SPAN id="JSPanel"></SPAN>
这个如何用你说的web_reg_save_param()这个函数呢????

游梵 发表于 2008-11-26 16:10:01

也可以使用tree 结构去看服务器端返回的数据。。。选择一个比较有代表性的进行web_reg_find

maliya1314 发表于 2012-1-9 23:38:48

看是否解决。lr本身录制 不到windows弹窗,在tree脚本中将登陆成功的信息取出来
页: [1] 2
查看完整版本: LR录制弹出的对话框如何做文字验证?