LoadRunner錄製:關聯

通常請求中看到 hash strings, random strings, session ID 這種,就須要動態去獲取該內容,這樣就須要用到關聯。css

回放時自動關聯

1. 錄製腳本並執行。html

2. 打開「Scan Action for Correlation」窗口,該窗口會詢問用戶是否要掃描腳本並創建關聯,單擊「yes」按鈕,掃描腳本。web

有多種方式能夠打開「Scan Action for Correlation」窗口:session

  • 方式一:選擇 Vuser –> Scan Script for Correlations。
  • 方式二:同時按住 Ctrl + F8 便可調出該窗口。
  • 方式三:執行腳本,執行完畢後系統會自動跳出該窗口。

3. 掃描完後,能夠在腳本下方的「Correlation Results」中看到掃描的結果。dom

4. 檢查一下掃描的結果,選擇要作關聯的數據,而後單擊「Correlation」按鈕,逐次關聯。函數

這裏點擊列出的關聯條目,能夠看到上面以Tree View 的方式對Record 和 Replay 的結果進行比對,方便肯定要不要進行關聯。工具

5. 重複步驟1 ~ 步驟4 ,直到全部須要作關聯的數據都找出來爲止。url

手動進行關聯方法一:本身寫腳本添加關聯

背景:

好比你在請求request15的時候須要用到 userid,結果你發現request2的Response裏面有userid,那麼你要在request2的前面添加關聯腳本,假設保存到的參數爲userid_result,那麼在request15裏面就能夠直接像使用參數那樣使用{userid_result} 。spa

前提條件

假設頁面返回的部分 response 以下:3d

image

咱們須要獲取上面 <title>和 </title>之間的內容,保存到參數 TitleName裏面,留着後邊用。

那麼咱們須要在該頁面請求的前面添加關聯腳本。

添加方法:

1. 鼠標右鍵,選擇 Insert –> New Step。

2. 在 Find Function 中輸入 web_reg_save_param_ex,點擊OK。

3. 編輯彈出框以下。

Parameter Name:獲取的內容要保存到的參數名稱,好比這裏我想保存到TitleName裏面,就輸入TitleName。

Left Boundary:左邊界。上面看左邊界咱們能夠輸入」title>「

Right Boundary:右邊界。上面看右邊界咱們能夠輸入」</title「

Scope:表示查找範圍,好比這裏在選擇在BODY裏面查找。還有其餘選項,好比HEADERS、COOKIES

Request URL:表示查找的URL的範圍。

image

4. 點擊OK生成腳本。

能夠在該頁面請求後使用 lr_output_message 打印該參數查看是否正確。

    web_reg_save_param_ex(
        "ParamName=TitleName",
        "LB=title>",
        "RB=</title",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/www.cnblogs.com/*",
        LAST);

    web_url("www.cnblogs.com",
        "URL=http://www.cnblogs.com/",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t17.inf",
        "Mode=HTML",
        LAST);

    lr_output_message("TitleName:%s",lr_eval_string("{TitleName}"));

5. 運行,查看Log

Action4.c(4): Registering web_reg_save_param_ex was successful      [MsgId: MMSG-26390]
Action4.c(13): Found resource "http://www.cnblogs.com/bundles/aggsite.css?
.......
Action4.c(13): web_url("www.cnblogs.com") was successful, 269803 body bytes, 18741 header bytes      [MsgId: MMSG-26386]
Action4.c(22): TitleName:博客園 - 開發者的網上家園

能夠看到正確獲取了咱們想要的內容。

 

備註:

感想就是,手動關聯必定要想着怎樣去界定你要獲取的內容,左邊界右邊界必定要對,而後儘量的在Filters裏面縮小範圍就能夠。

手動進行關聯方法二:在Tree View裏面自動創建關聯

假設要獲取的內容在 「www.cnblogs.com「的response body裏面。

方法:

1. 切換到 Tree View視圖。

選擇 View –> Tree View便可。

2. 選中 Url: www.cnblogs.com

3. 點擊HTTP View 查看該連接的 HTTP視圖。

4. 點擊Response Body查看該請求返回的響應結果。

5. 用鼠標選中要獲取的內容,而後點擊右鍵,選擇Create Correlation,點擊「是」。

image

6. 切換回腳本視圖查看關聯是否添加成功。

選擇 View –> Script View便可。

//Correlation comment - Do not change!Original value='鍗氬鍥?- 寮€鍙戣€呯殑緗戜笂瀹跺洯' Name ='CorrelationParameter_1'

    web_reg_save_param_ex(
        "ParamName=CorrelationParameter_1",
        "LB=title>",
        "RB=</title",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/www.cnblogs.com/*",
        LAST);

備註

1. 轉義字符

左右邊界含有特殊字符時,須要用到轉義字符「\」。

常見的特殊字符表示以下:

\b 退格
\f 換頁
\n 換行
\r 回車
\t 水平製表
\v 垂直製表
\\ 反斜槓
\? 問號字符
\' 單引號字符
\" 雙引號字符
\0 空字符

看下面的例子,我須要獲取imgId的值:

image

關聯腳本以下:

    web_reg_save_param_ex(
        "ParamName=image_id_value",
        "LB=imgId\":\"",
        "RB=\",",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/sendimagecode*",
        LAST);

2. 如何定位須要關聯的地方

可使用LoadRunner自帶的工具 WinDiff來比較腳本的不一樣,進而找出須要進行關聯的地方。

1) 錄製兩遍腳本,假設分別爲 s1 和 s2

2) 使用WinDiff 工具找出兩次腳本的不一樣,判斷是否須要進行關聯

打開s2,打開 tool –> compare with Script,選擇s1。

兩個腳本不一樣的地方 WinDiff 會進行標黃處理。

3)通常兩個腳本不一樣的地方都須要進行關聯處理。

lr_think_time表示等待時間,這個不一樣的話不用管。

image

4)找到產生該不一樣文字是在哪一個request返回的response裏面,咱們在該resquest前面添加關聯函數便可。

相關文章
相關標籤/搜索