|
LR的脚本经过编译后,实际上就是标准的C程序,以下是一个脚本的例子:
#include "lrun.h"
#include "vuser_init.c"
#include "NewMember.c"
#include "MemberForPusr.c"
#include "Main.c"
#include "vuser_end.c"
所以我们有了编写更灵活,更具控制性的脚本机会。在脚本中,可以把几个可以重复操作的Action写成函数,用Main.c来控制(注意,使用这种方法,必须按F4在Runtime Setting中将过程Action Delete掉,只留下Main Action),举例:
NewMember(char* FatherMember)
{
MemberForPusr(FatherMember, "888888", MemberNum);
return 0;
}
Main()
{
lr_output_message("Main is loaded");
NewMember("10786");//把Action NewMember当函数调用了!!
return 0;
}
这样就出现了一个问题,我们完全可以设置一些全局的变量,和一些过程变量进行灵活的参数设置,不过在测试Web程序时,参数化的输入一般是在LR中配置参数表,如下一个打开链接的操作,{}之间的参数是配置在当前Action的参数表中的:
web_submit_form("pre_create.php",
"Snapshot=t14.inf",
ITEMDATA,
"Name=Num", "Value={pusrcnt}", ENDITEM,
"Name=ValidCode", "Value=0000", ENDITEM,
"Name=x", "Value=39", ENDITEM,
"Name=y", "Value=10", ENDITEM,
LAST);
但是我们传递到函数中的参数不能用这种方法,我试了好几种方式,就是不能把我在程序中传递的参数para直接写在程序中:
"Value=$para",不丁!
"Value={para}",不丁!
后来终于找到了办法,把所有要传递的变量定义成字串char *,然后在LR的变量表中生成几个对应的空变量,用以下函数去传递:
lr_save_string(lr_eval_string(Server), "Server");
lr_save_string(lr_eval_string(Id), "id");
lr_save_string(lr_eval_string(Password), "password");
lr_save_string(lr_eval_string(PUsrCnt), "pusrcnt");
lr_save_string是将字串存到参数表中指定的变量中(引号标注的是Action参数表中已有的变量),lr_eval_string则是取出参数或者字串变量的值,哈哈,这样我就可以把不同的Action写成函数,然后自由地传递参数了。
不过新问题又来了,怎样把网页上查得的结果比如用户名列表捕获到,又传回到参数表中呢?这样我们才可以构建更加自动化的用例啊。QTP是可以在页面捕获输出的,不过LR我还没有找到方法。哪位大虾指点一下啊!!!
当然如果是存在后台数据库中的表,就可以用直接链到数据源的方法。要是没有办法连到后台呢?
[ Last edited by johnbear on 2004-11-9 at 17:19 ] |
|