LR测试登陆后进行的操作时 绕过登录

oadrunner web_add_cookie

 web_add_cookie 这个的函数原来真的能过逃过登录,哈哈,这个苦苦纠结我的问题呀。

函数原型:int web_add_cookie( const char *Cookie);

其中 cookie参数列表格式添加如下:
Defines the cookie to add or modify. The Cookie parameter has the following format:
name=VALUE; (required) //需要添加的cookie变量名=变量值,必须有
domain=DOMAIN_NAME; (required) 需要cookie的域名,必须有
expires=DATE;  失效日期 可以可无,最好有。又错了,该字段是根据服务端设置的,服务端设置可以保存多长时间,就保存多长时间,Lr在模拟时该时间一般要在服务端允许的时间范围内,但是不在范围内好像也不报错,估计也不会有用,有的cookie是根据session来的,比如截图中的cookie有效期为end of session,意思就是session死了,cookie也就失效了,所以你设置再长时间也没有用啦。
path=PATH; (default path is "/") cookie路径,默认是当前路径还是根目录呀?这个/目录到底是哪里呢?都不是,该path路径的意思是cookie的适应范围,/代表该cookie从该程序的根目录起适用。这个也是要根据服务端设置来的,看截图的path路径为/,表示呀该cookie从该应用的根目录开始适用,lr中按照此设置即可,当然也可以设置成根目录以下的目录,可是你客户端怎么知道根目录以下还有哪些目录呢?哈哈,所以这能照抄服务端返回的目录啦。
使用办法,在firefox浏览器中运行一次实际的登录过程,登录过程中开启httpfox插件,获取接受到的cookies各个字段的值,然后加到lr的初始化里(vuser_init()),绕过登录。
代码如下:
web_add_cookie ("tonido-login-seed-10001=588831e0-2d20-43bf-8aad-979590571e68; path=/; expires=Wednesday, 09–Nov–2011 23:12:40 GMT; domain=kortide.tonidoid.com");

web_add_cookie ("tonido-login-hash-10001=df420fa77e1facf1c5ad1d3de3b5ee007bffcf09; path=/; expires=Wednesday, 09–Nov–2021 23:12:40 GMT; domain=kortide.tonidoid.com");

web_add_cookie ("tonido-login-user-10001=kortide@tonidoid.com; path=/; expires=Wednesday, 09–Nov–2011 23:12:40 GMT; domain=kortide.tonidoid.com");

参数里的name,value,path,domain的值都是可以直接从httpfox中获取到的,至于expires你可以随便写,只要是未来时间即可。具体可看截图哈。
添加完cookie后,那些需要登录后才能进行的操作,再也不用登录后再操作了,因为登录实在是太消耗时间了,测试时遇到tonidoid只能同时登录5个用户的限制,我想做超过5个用户的并发场景,一直模拟不出来,这下应该能解决了,一会试试。
千真万确,解决了,哈哈。

http://tbaike.com/index.php?category-view-6.html 一个测试类的网站

又尝试写了一个函数自动获取页面换回的cookie:

int login(char cookies[10][100] )
{
char  cookie[50]; // The formatted value of outFlightParam
int len,i; 
        web_reg_save_param("cookie",
        "LB=Set-Cookie:",
        "RB=HttpOnly",
        "ORD=ALL",
        "Search=headers",
        LAST);
    web_custom_request("loginprofile",
        "URL=http://url",
        "Method=POST",
        "Resource=0",
        "RecContentType=text/xml",
        "Mode=HTML",
        "EncType=text/plain; charset=utf-8",
        "Body=profile={profile}&safemode=0&autologin=1&password={password}",
        LAST);
        len=atoi(lr_eval_string("{cookie_count}"));
        for (i=1;i<=len;i++) {
            sprintf(cookie,"{cookie_%d}",i);
            sprintf(cookies[i-1],"%s",lr_eval_string(cookie));
            lr_output_message("cookies %s",cookies[i-1]);

}

结果ok~~

包含cookie的头一般如下:
(Status-Line)    HTTP/1.1 200 OK
Cache-Control    private, no-cache, no-store, proxy-revalidate
Connection    Close
Content-Length    102
Content-Type    text/xml; charset=utf-8
Date    Tue, 23 Aug 2011 06:10:10 GMT
Pragma    no-cache
Set-Cookie    tonido-login-seed-10001=fee60fe9-a70d-4936-aeac-64f27fdc21a2; path=/; HttpOnly
Set-Cookie    tonido-login-hash-10001=9a82fb6088db8b05fa4e6f6b973c28d02383c954; path=/; HttpOnly
Set-Cookie    tonido-login-user-10001=kortide@tonidoid.com; path=/; HttpOnly

Never give up !
原文地址:https://www.cnblogs.com/AmilyWilly/p/4673421.html