LoadRunner錄制圖片驗證碼


LoadRunner錄制圖片驗證碼
LoadRunner自身是無法捕獲到圖片驗證碼的,但是我們可以幫助LoadRunner來實現驗證碼的捕獲。
1.圖片驗證碼
圖片驗證碼的產生來自服務器端,由服務器生成隨機數,然后寫入到圖片中。雖然LR可以錄制下圖片,但是無法從圖片中獲取數據,因此表面上看LR是無法跳過這關了,那么我們從服務器下手,通常產生的隨機數是保存在session中,所以我們可以想辦法獲取到這個session。
 
 a.針對應用,采用不同的語言,本次講的是java應用,首先寫個*.jsp腳本,用來獲取應用當前session的名值對。
 b.將腳本調試通過后,放入應用的root目錄下。
 c.訪問該腳本,驗證能獲取session名值對。
2.捕獲驗證碼
既然可以從服務器獲得session的名值對,那么我們就可以用LR來捕獲這些值。
 
 a.添加注冊函數web_reg_save_param,設置目標邊界。
 b.通過web_url訪問*.jsp文件。
 c.處理名值對,使用atoi將字符串型的驗證碼轉換成整型。
3.篩選捕獲的信息
a.在捕獲的session信息中,可能存在多個名值對,所以建議用循環處理,篩選出驗證碼的session。
 b.建議在獲得驗證碼session后,重新整理腳本,修改web_reg_save_param的目標邊界值,然后直接調用web_url訪問*.jsp,這樣可以避免循環帶來的性能問題,提高效率。
4.參數化
將驗證碼進行參數替換,腳本回放即可。
5.實例
Action()
 {
 web_url("reg.jsp", 
    "URL=http://localhost:8090/verf/reg.jsp", 
    "Resource=0", 
    "RecContentType=text/html", 
    "Referer=", 
    "Snapshot=t2.inf", 
    "Mode=HTTP", 
    LAST);
web_url("CheckCode.jsp", 
    "URL=http://localhost:8090/verf/CheckCode.jsp", 
    "Resource=1", 
    "RecContentType=image/jpeg", 
    "Referer=http://localhost:8090/verf/reg.jsp", 
    "Snapshot=t3.inf", 
    LAST);
web_reg_save_param("vcode","LB=S:","RB=:E", "ORD=ALL", LAST);
SessionInfo("vcode", "http://localhost:8090/verf/verify.jsp", "http://localhost:8090/verf/reg.jsp");
lr_start_transaction("very");
web_submit_data("actreg.jsp", 
    "Action=http://localhost:8090/verf/actreg.jsp", 
    "Method=POST", 
    "RecContentType=text/html", 
    "Referer=http://localhost:8090/verf/reg.jsp", 
    "Snapshot=t4.inf", 
    "Mode=HTTP", 
    ITEMDATA, 
    "Name=CheckCode", "Value=5715", ENDITEM, 
    "Name=btnG", "Value=登錄", ENDITEM, 
    LAST);
lr_end_transaction("very",LR_AUTO);
return 0;
 }
 
 小結
a.此方法有一定的局限性,主要表現在需要寫一個服務端的腳本,並將腳本放入應用中,其次對於不同語言編寫的應用,需要編寫不同的腳本,如java、c#,最后此方法只適用於將驗證碼保存到session中的應用。
 b.可以將上面關於LR的方法寫入函數中,方便以后的測試,提供 session.h 和 verify.jsp 腳本供參考

深圳湖北籍軟件測試群 275212937


免責聲明!

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



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