在开发Discuz登录脚本时,遇到的一个问题是怎么去验证虚拟用户真正的登录成功,当然,熟悉LoadRunner工具的人就会知道,在脚本中使用检查点,对,没错!
我们知道,LR检查点功能有两种:文本检查点web_find()、web_reg_find() 和 图像检查点web_image_check()
这里只讲,如何使用图像检查点web_image_check()。
先了解一下这个函数的使用:web_image_check() 语法: int web_image_check(const char *CheckName, <List of Attributes>, <"Alt=alt"|| "Src=src">, LAST ); 参数: 1、CheckName:Check名称。 2、List of Attributes: 支持的属性有:Frame(在多Frame的情况下,定义要查找Frame的范围)。 支持的选项有: Expect:检查通过的条件,默认为Found Matchcase:是否区分大小写,默认为no Repeat:找到第一个符合条件字符串后,是否还继续搜索,默认为yes Report:什么情况下(success、failure、always)显示检查结果,默认always Onfailure:失败(expect的值决定)的情况下,是否继续,默认为Continue on Error。 3、Alt:图片的ALT标记。 4、Src:图片的SRC标记。
使用LR工具中,插入函数web_image_check()时,有两种检查方式,一是使用图片的ALT标记;二是使用图片的SRC标记。如图
在登录成功的页面,右键查看源代码,找到刚才需要检查的<img>图片,这里我用的是Src定位路径
代码如下:
1 web_url("forum.php_2", 2 "URL=http://192.168.157.128/Discuz/upload/forum.php", 3 "Resource=0", 4 "RecContentType=text/html", 5 "Referer=", 6 "Snapshot=t3.inf", 7 "Mode=HTML", 8 EXTRARES, 9 "URL=static/image/common/user_online.gif", ENDITEM, 10 "URL=static/image/feed/favorite_b.png", ENDITEM, 11 "URL=static/image/feed/magic_b.png", ENDITEM, 12 "URL=static/image/feed/medal_b.png", ENDITEM, 13 "URL=static/image/feed/task_b.png", ENDITEM, 14 "URL=static/image/feed/wall_b.png", ENDITEM, 15 "URL=static/image/common/style_switch.png", ENDITEM, 16 "URL=static/image/feed/friend_b.png", ENDITEM, 17 "URL=static/image/feed/thread_b.png", ENDITEM, 18 LAST); 19 20 web_image_check("web_image_check", 21 "Src=/upload/uc_server/avatar.php?uid=2&size=small", 22 LAST);
这里,需要注意,使用图像检查点时,代码位置,必须将该函数放到提交访问的URL后面,若放在前面,则会报错,如下报错信息
Action_login.c(33): Continuing after Error -27191: "web_image_check" failed (0 occurrence(s) found. Alt="", Src="/upload/uc_server/avatar.php?uid=2&size=small") [MsgId: MERR-27191]
看到上面的报错信息,就是说明找不到检查点,总结了下有三种可能:
1、检查参数的信息是否写错;
2、web_image_check(),查看该图片的源代码,看其是否是这个页面上的图片,很可能是图片选择错误,即所选图片不属于该页面;
扩展知识:
图像检查点函数web_image_check(),是支持嵌入关联变量的,意思是在Alt=“”或者Src=“”内容中,若脚本中涉及到关联是可以嵌入的
刚好,我这里的头像,检查图片时就必须做管理,因为每个用户的头像图片是不一样的,userId也不一样,代码如下:
1 web_reg_save_param("uidParam", 2 "LB=<img src="http://127.0.0.1/Discuz/upload/uc_server /avatar.php?uid=", 3 "RB=&size=small" />", 4 "Search=Body", 5 LAST); 6 7 8 web_image_check("web_image_check", 9 "Src=/upload/uc_server/avatar.php?uid={uidParam}&size=small", 10 LAST);
LR回放之后,可以看到关联成功,如图