關聯(correlation):腳本回放過程當中,客戶端發出請求,經過關聯函數所定義的左右邊界值(也就是關聯規則),在服務器所響應的內容中查找,獲得相應的值,已變量的形式替換錄製時的靜態值,從而向服務器發出正確的請求,這種動態得到服務器響應內容的方法被稱做關聯。也是把腳本中某些寫死的數據,轉變成動態的數據。
什麼內容須要關聯:當腳本中的數據每次回放都發生變化時,而且這個動態數據在後面的請求中須要發送給服務器,那麼這個內容須要經過關聯來詢問服務器,得到該數據的變化結果。例如:
1.登陸字符串。帶有會話 ID 或時間戳等動態數據的登陸字符串。
2.日期/時間戳。使用日期或時間戳或者其餘用戶憑據的任意字符串。
3.常見前綴。後跟字符串的常見前綴,如 SessionID 或 CustomerID數組
語法:函數
int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);日誌
參數說明:blog
· ParamName: 存放獲得的動態內容的參數名稱字符串
· list of Attributes: 其它屬性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。屬性值不分大小寫get
o Notfound: 當在返回信息中找不到要找的內容時應該怎麼處理it
o Notfound=error: 當在返回信息中找不到要找的內容時,發出一個錯誤訊息。這是缺省值。io
o Notfound=warning: 當在返回信息中找不到要找的內容時,只發出警告,腳本也會繼續執行下去不會中斷。
o LB( Left Boundary ) : 返回信息的左邊界字串。該屬性必須有,而且區分大小寫。
o RB( Right Boundary ): 返回信息的右邊界字串。該屬性必須有,而且區分大小寫。
o RelFrameID: 相對於URL而言,欲查找的網頁的Frame。此屬性質能夠是All或是數字,該屬性無關緊要。
o Search : 返回信息的查找範圍。能夠是Headers,Body,Noresource,All(缺省)。該屬性質無關緊要。
o ORD : 說明第幾回出現的左邊界子串的匹配項纔是須要的內容。該屬性無關緊要,缺省值是1。如爲All,則將全部找到的內容儲存起來。
o SaveOffset : 當找到匹配項後,從第幾個字元開始存儲到參數中。該屬性不能爲負數,缺省值爲0。
o SaveLen :當找到匹配項後,偏移量以後的幾個字元存儲到參數中。缺省值是-1,表示一直到結尾的整個字串都存入參數。
3、實例解析
例1:
如圖所示,不輸入查詢條件,直接點擊【查詢】按鈕。生成的數據提交腳本以下:
該value值爲請求的數據總數,該值是動態變化的。爲了正確的發送請求並獲得正確的結果,須要對該值進行關聯。
在Generation Log中搜索「totalItem」,如圖所示,從而能夠肯定該value值的左右邊界。
在腳本的請求前插入web_reg_save_param方法,並在提交數據請求的時候使用{count}來替代錄制時實際的值。以下圖:
打開擴展日誌,運行腳本,能夠看到正確的關聯出告終果。
例2:
上面實例是使用web_reg_save_param的ORD=1,只是取第1次出現的左邊界子串的匹配項爲須要的內容,下面例子使用web_reg_save_param的ORD=ALL,將匹配到的內容保存到數組中。
根據消息列表中的記錄數來進行關聯(只是爲了演示,分頁不考慮),跟蹤Generation Log能夠看到,一條記錄的內容會包含5列內容。以下圖:
從上圖中能夠肯定其左右邊界,在腳本的請求前插入web_reg_save_param方法,並在提交數據請求的時候使用arrSize/5來替代錄制時實際的值。以下圖:
其中lr_paramarr_len方法用於取出數字長度,lr_paramarr_idx方法用於取數組指定下標的值。打開擴展日誌,運行腳本,能夠看到正確的關聯出告終果。