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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM