到這里您已經完成了一個關聯了,接下來就是執行腳本,是否能成功運行,假如還是有問題,就要檢查看看是否還需要再做另一個關聯。
關于 web_reg_save_param 函數
對于關聯(correlation)來說,web_reg_save_param是最重要的一個函數,其功能是在下載的網頁內容中,透過設定的邊界字符串,找出特定的數據并將其儲存在一個參數中,以供后續腳本使用。
接下來將針對web_reg_save_param做比較詳細的說明。
Service and registration type function
web_reg_save_param是一個Service function。service function主要是用來完成一些特殊的工作的,如關聯、設定proxy、提供認證信息等,當其作用時,不會對網頁的內容做任何的修改。
web_reg_save_param同時也是一個registration type function (只要函數名稱中包含_reg_的字眼,表示其為registration type function)。registration type function意味著其真正作用的時機是在下一個action function完成時執行的。舉例來說,當某個web_url執行時所接收到的網頁內容中包含了要做關聯的動態數據,則必須將web_reg_save_param放在此web_url之前,則web_reg_save_param會在web_url執行完畢后,也就是網頁內容都下載完后,再執行web_reg_save_param找尋要做關聯的動態數據并建立參數。
所以要記住一點,要使用registration type function時,要注意其放置的位置必須在要作用的action function之前。
語法
int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);
參數說明
ParamName:存放動態數據的參數名稱
list of Attributes:其它屬性,包含 Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, 以及 SaveLen。屬性值不分大小寫,例如 Search=all。以下將詳細說明每個屬性值的意義:
- Notfound:指定當找不到要找的動態數據時該怎么處置。
- Notfound=error:當找不到動態數據時,發出一個錯誤訊息。假如沒設定此屬性,此為LoadRunner的默認值。
- Notfound=warning:當找不到動態數據時,不發出錯誤訊息,只發出警告,腳本也會繼續執行下去不會中斷。在對角本除錯時,可以使用此屬性值。
- LB:動態數據的左邊界字符串。此屬性質是必須要有的,而且區分大小寫。
- RB:動態數據的右邊界字符串。此屬性質是必須要有的,而且區分大小寫。
- RelFrameID:相對于URL而言,欲搜尋的網頁的Frame。此屬性質可以是All或是數字,而且可有可無。
- Search:搜尋的范圍。可以是Headers(只搜尋headers)、Body(只搜尋body部分,不搜尋header)、Noresource(只搜尋body部分,不搜尋header與resource)或是All(搜尋全部范圍,此為默認值)。此屬性質可有可無。
- ORD:指明從第幾次出現的左邊界開始才是要擷取的數據。此屬性質可有可無,默認值是1。假如值為All,則所有找到符合的數據會儲存在數組中。
- SaveOffset:當找到符合的動態數據時,從第幾個字符開始才開始儲存到參數中。此屬性質不可為負數,其默認值為0。
- Convert:可能的值有二種:
- HTML_TO_URL: 將HTML-encoded數據轉成URL-encoded數據格式
- HTML_TO_TEXT:將HTML-encoded數據轉成純文字數據格式
SaveLen:從offect開始算起,到指定的長度內的字符串,才儲存到參數中。此參數可有可無,默認值是-1,表示儲存到結尾整個字符串。
范例
web_reg_save_param("A", "LB/ic=<a href=", "RB='>", "Ord=All", LAST);
nner會搜尋網頁中所有以「<a href=」開頭,且以「’>」結束,當中包含的字符串,并且儲存在「A」參數中。
Tips and Tricks
以下提供一些關聯的常見問題:
- 如何打印出參數值?
lr_output_message這二個函數來做到。例如:
lr_output_message(“Value Captured = %s”, lr_eval_string(“{ParameterName}”));
lr_eval_string與lr_output_message函數的使用說明請參考LoadRunner Online Function Reference。
- 在腳本的data目錄下找不到路制時的快照(snapshot)
造成在腳本的data目錄下找不到路制時的快照(snapshot)的可能原因如下:- 腳本是由VuGen 6.02或更早的版本所錄制的
- 匯入的Action不會包含快照(snapshot)的檔案
- 腳本是儲存在只讀的目錄下,早成VuGen無法儲存執行時擷取的快照(snapshot)
- 某些步驟并不會產生快照(snapshot),如瀏覽某個資源
- 快照(snapshot)功能被取消
【Tools】>【General options】>【Correlation】tab >【Save correlation information during replay】
- 開啟WinDiff時出現「File no longer available」的錯誤訊息
WinDiff這個工具有些限制,無法開啟包含空格符的目錄或是腳本,所以建議命名時不要使用空格符,并且盡可能將名稱取短一點。
錄制時突然跳出【Correlation warning】對話窗口
當你有勾選自動關聯的【Issue a popup message and let me decide online】選項,當VuGen發現有可能要做關聯的數據時,就會跳出【Correlation warning】的窗口,詢問你要做關聯(Correlation in script)還是要忽略(Ignore)。
另外你也可以勾選【Perform correlation in script】,讓VuGen自動作關聯,不會再跳出詢問窗口。
或是勾選【Disable correlation engine】,關閉自動關聯的功能。

如何手動啟動「Scan action for correlation」的功能
要手動啟動「Scan action for correlation」的功能,請先執行腳本一次后,點選【Vuser】>【Scan Action for Correlation】。
執行完腳本后并未出現【Scan Action for Correlation】窗口
要啟用【Scan Action for Correlation】功能,請點選【Tools】>【General options】>【Correlation】tab,勾選【Show Scan for correlation popup after replay of Vuser】選項。