一、web_reg_save_param的概述
web_reg_save_param()是LoadRunner中一個非常強大的函數,它可以用於從伺服器響應中提取出特定的信息。
這些信息可以是動態的,如會話ID,也可以是靜態的,如頁面標題或驗證碼。
通過使用web_reg_save_param函數,我們可以在一個HTTP請求被發送到伺服器後,從伺服器返回的響應中提取並保存我們需要的信息。
二、web_reg_save_param參數詳解
web_reg_save_param函數有多個參數,這些參數中最重要的是正則表達式和保存到的參數名。
1. 正則表達式
正則表達式是一種用於匹配字元串的模式,它可以讓我們從伺服器響應中找到我們需要的信息。
LoadRunner中的正則表達式和其他語言中的略有不同,其格式如下:
web_reg_save_param("ParamName", "LB=Left Boundary", "RB=Right Boundary", "Search=Body", "IgnoreRedirections=Yes/No", LAST);
其中LB、RB和Search是用於指定正則表達式的邊界和搜索範圍的參數。
IgnoreRedirections參數用於指示是否忽略重定向請求。
2. 參數名
保存參數名是將從伺服器響應中提取的信息存儲在內存中供後續使用的關鍵。此參數名必須以大寫字母「P」開始,並且後面必須是一個數字,它標識此參數的編號。
例如:
web_reg_save_param("P1", ...) web_reg_save_param("P2", ...) web_reg_save_param("P3", ...)
三、web_reg_save_param常用技巧
1. 使用正則表達式
要使用web_reg_save_param函數從伺服器響應中提取出所需的信息,我們需要了解如何編寫正確的正則表達式。
以下是一些常用的正則表達式:
- 提取HTML標籤:””
- 提取鏈接URL:”href=[‘”]?(.*?)[‘”\s>]
- 提取圖片地址:”src=[‘”]?(.*?)[‘”\s>]
- 提取文本內容:”]*>([^<]*)[^>]*>”
2. 使用參數化
將參數化視為測試自動化的核心,是當前軟體測試發展的趨勢。通過參數化,我們可以更好地模擬和測試現實場景,不同用戶的操作和數據等更貼合實際情況。
使用web_reg_save_param函數,我們可以輕鬆地將從伺服器響應中提取的信息保存到參數中,並在後續的測試中使用。例如:
web_reg_save_param("SESSIONID", "LB=name=\"sid\" value=\"", "RB=\" />", "Search=Body", LAST); web_url("login.aspx", "URL=http://www.example.com/login.aspx?sid={SESSIONID}", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t1.inf", "Mode=HTML", LAST);
3. 使用web_custom_request函數
有時候,我們需要構造自己的HTTP請求,而不是使用LoadRunner自動生成的請求。
在這種情況下,我們可以使用web_custom_request函數,並在請求中使用web_reg_save_param來提取信息。例如:
web_custom_request("SubmitOrder.aspx", "Method=POST", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=http://www.example.com/cart.aspx", "Snapshot=t1.inf", "Mode=HTML", ITEMDATA, "Name=product_id", "Value=1", ENDITEM, "Name=quantity", "Value=3", ENDITEM, "Name=session_id", "Value={SESSIONID}", ENDITEM, LAST); web_reg_save_param("ORDERID", "LB=", "RB=", "Search=Body", LAST);
四、web_reg_save_param函數的注意事項
1. 參數名必須以P開頭
為了保證web_reg_save_param函數能夠正常工作,我們必須將參數名命名為以大寫字母「P」開頭的字元串,並在後面指定參數編號。例如:「P1」。
2. 正確設置邊界和搜索範圍
在使用web_reg_save_param函數時,正確設置邊界和搜索範圍非常重要。如果不正確設置,函數可能無法正確提取所需的信息。
一般情況下,我們應該在響應HTML的代碼中找到邊界,並使用左邊界和右邊界將其包圍起來。例如:
web_reg_save_param("SESSIONID", "LB=name=\"sid\" value=\"", "RB=\" />", "Search=Body", LAST);
這將從伺服器響應中提取出類似「sid=XXXXXX」的字元串,並將其保存在名為SESSIONID的參數中。
3. 判斷是否提取到了正確的參數
調試和驗證從伺服器響應中提取的參數的值是測試自動化過程中的關鍵之一。在調試期間,我們應該檢查web_reg_save_param函數是否正確提取了參數,並根據實際情況進行調整。
在調試期間,我們可以使用lr_output_message函數輸出參數的值。例如:
web_reg_save_param("SESSIONID", "LB=name=\"sid\" value=\"", "RB=\" />", "Search=Body", LAST); lr_output_message("SESSIONID = %s",lr_eval_string("{SESSIONID}"));
五、完整示例代碼
下面是一個完整的使用web_reg_save_param函數的示例代碼:
Action() { web_reg_save_param("SESSIONID", "LB=name=\"sid\" value=\"", "RB=\" />", "Search=Body", LAST); web_url("login.aspx", "URL=http://www.example.com/login.aspx?sid={SESSIONID}", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t1.inf", "Mode=HTML", LAST); lr_output_message("SESSIONID = %s",lr_eval_string("{SESSIONID}")); return 0; }
六、小結
web_reg_save_param函數是LoadRunner中一個非常強大的函數,它可以從伺服器響應中提取出特定的信息,並將其保存在參數中供後續使用。通過使用web_reg_save_param函數,我們可以更好地模擬和測試現實場景,提高測試的覆蓋率和效率。
在使用web_reg_save_param函數時,需要注意正確設置正則表達式的邊界和搜索範圍,並在調試期間驗證提取的參數是否正確。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/250596.html