Loadrunner中web_find和web_reg_find函數的使用與區別

 

主要介紹兩個函數:web_find()和web_reg_find();這兩個函數均用於內容的查找,但兩者也有本質的區別,具體介紹如下:
  一、web_find()函數
  該函數的作用是“從HTML頁面中查找指定的文本字符串”常用參數及含義如下:

web_find("web_find", //定義該查找函數的名稱
"RightOf=a", //定義查找字符的右邊界
"LeftOf=b", //定義查找字符的左邊界
"What=name", //定義查找內容
LAST);

使用該函數注意以下事項:
1、位置
  該函數在請求的頁面內容完全顯示出來以後,在頁面中進行查找,所以只能寫在打開頁面的動作之後
2、錄製模式
  該函數只能在基於HTML模式錄製的腳本中進行查找
3、必須啓用內容檢查選項
  打開LoadRunner的Virtual User Generator組件,選擇Vuser->runtime setting->Preferences裏面,把Enable image and text check選中,啓用檢查點,否則將不執行該查找函數;

4、在VB和JAVA語法中不支持該函數
5、被查找的文本內容中間不要有空格,否則運行後有錯誤

  該函數有以下缺點:
1、 執行效率較低
2、 不返回查找結果情況,如想在執行該函數後根據查找結果做進一步操作時,沒有返回值可以依據
  例如:
  在頁面中查找“登錄成功”的字符串,如果找到該字符串在日誌中輸出“登錄成功”,如果找不到該字符串,則在日誌中輸出“登錄失敗”,此時使用該函數沒有依據來做此判斷,但使用web_reg_find()函數,使用它其中的SaveCount可以進行判斷,具體方法我們下面介紹。

二、web_reg_find()函數
  該函數的作用是“在緩存中查找相應的內容”,常用參數及含義如下:
web_reg_find("Search=Body", //定義查找範圍
"SaveCount=ddd", //定義查找計數變量名稱
"Text=aaaa", //定義查找內容
LAST);
  使用該函數注意以下事項:
1、位置
  該函數寫在要查找內容的請求之前,通常情況下寫在如下六個函數之前:
web_castom_request(); web_image(); web_link(); web_submit_data(); web_submit_form(); web_url()
2、使用技巧
  在該函數的參數中有個“SaveCount”,該參數可以記錄在緩存中查找內容出現的次數,我們可以使用該值,來判斷要查找的內容是否被找到,下面舉個例子來說明:(引用LR的幫助中的例子)
// Run the Web Tours sample
web_url("MercuryWebTours",
"URL=http://localhost/MercuryWebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
// Set up check for successful login by looking for "Welcome"
web_reg_find("Text=Welcome",
"SaveCount=Welcome_Count",
LAST);
// Now log in
web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=login.x", "Value=35", ENDITEM,
"Name=login.y", "Value=14", ENDITEM,
LAST);
// Check result
if (atoi(lr_eval_string("{Welcome_Count}")) > 0){ //判斷如果Welcome字符串出現次數大於0
lr_output_message("Log on successful."); }//在日誌中輸出Log on successful
else{ //如果出現次數小於等於
lr_error_message("Log on failed"); //在日誌中輸出Log on failed
return(0); }
  我覺得這個方法非常有用,我們可以舉一反三,應用到我們實際的項目中
  三、插入檢查點函數的方法
1、手工寫入,在需要插入函數的位置手工寫入該函數
2、光標停留在要插入函數的位置,在INSERT菜單中,選擇new step,在列表中選擇或查找要插入的函數,根據提示填寫必要的參數
3、在tree view模式下,在樹狀菜單中選中要插入函數的位置,右鍵,選擇insert after或insert before,根據提示填寫必要的參數
  四、總結
1、這兩個函數類型不同,web_find是普通函數,web_reg_find是註冊函數;

2、這兩種函數在運行機制不同,當客戶端向服務器發出一個請求的時候,服務器進行響應;當響應的數據在緩存中的時候,註冊函數可以在緩存中查找所要查找的內容;而普通函數(例如:web_find)需要等我們請求的顯示頁面完全顯示出來後,從這個顯示頁面中進行查找制定的字符串內容
3、web_find使用時必須開啓內容檢查選項,而web_reg_find則沒有此限制
4、web_find只能只用在基於HTML模式錄製的腳本中,而web_reg_find沒有此限制
5、web_find是在返回的頁面中進行內容查找,web_reg_find是在緩存中進行查找
6、web_find在執行效率上不如web_reg_find

附錄

web_find
 語法:
int web_find (const char *StepName, <Attributes and Specifications list>, char *searchstring, LAST );

參數:
1、StepName:步驟名稱,在Tree視圖中出現。

2、Attributes and Specifications list:

支持的屬性有:

Frame:在多Frame的情況下,定義要查找Frame的範圍。

Expect:定義在什麼情況下函數檢查成功:找到了指定的搜索標準或者沒有找到。例如說,可以檢查指定的錯誤信息是否出現在web頁面中。合法的值有2個:found和notfound。默認值是“found”。

Matchcase:指定搜索是否區分大小寫。

Repeat:指定當第一次發現要查找的字符串時,搜索是否繼續。當一個web頁面中包含多個被查找的字符串時,此參數是非常有用的。合法的值有2個:yes,no。默認值是“yes”。

Report:指定在什麼情況下,VuGen在執行日誌中顯示此函數的檢查結果。合法的值有:success,failure,always。默認值是“always”。

Onfailure:此參數決定在函數檢查失敗後,Vuser是否中斷。參數值是abort。如果指定了Onfailure=abort,當函數檢查失敗時,不論在運行時設置中的error-handling是什麼,腳本都會中斷。

如果沒有指定Onfailure=abort,那麼運行時設置中error-handling將會起作用。

支持的特性有:RightOf, LeftOf (不支持7.x及更高版本)。

RightOf:要查找的字符串右邊的內容。

LeftOf:要查找的字符串左邊的內容。

3、Searchstring:需要查找的字符串,格式爲“What=stringxyz”。此搜索不區分大小寫。

4、LAST:屬性列表結束符。

返回值
 整型。 成功時返回LR_PASS(0),失敗時返回LR_FAIL (1)。

說明
 此函數的作用是在HTML頁面中查找指定的字符串。

此函數只能在基於HTML錄製的腳本中使用。當指定的HTML請求全部完成以後,開始執行搜索過程,比web_reg_find要慢。

web_find函數在C語言的腳本中已經被web_reg_find所替代,web_reg_find運行速度比較快,而且在HTML-based和URL-based的錄製方式中都可以使用。在C語言腳本中,web_find是向後兼容的。Java和Visual Basic腳本中不再支持它。

運行在HTTP模式下的WAP用戶和運行在WSP回放模式下的WAP用戶都不支持此函數。

web_reg_find
 語法:
int web_reg_find (const char *attribute_list, LAST);

參數:
1、attribute_list:

通過Name=Value對來傳遞參數。例如“Text=string”。Text,TextPfx,TextSfx三個必須有一個出現。其他的屬性是可選的。

a) Text:要搜索的字符串,字符串必須非空,以NULL結尾。可以使用text flags自定義搜索字符串。

b) TextPfx:要搜索的字符串的直接前綴。

c) TextSfx:要搜索的字符串的直接後綴。

d) Search:搜索的範圍。可選的值是:Headers 、Body(在請求體中搜索)、Noresource (僅僅在HTML請求體中搜索,不包括頭和資源)、ALL (在請求體、頭和資源中搜索),默認值是“BODY”。

e) SaveCount:匹配的個數。

f) Fail:設置函數檢查在什麼狀態下失敗。

g) ID:日誌文件中標識此函數的一個字符串。

h) RelFrameId:相關聯的FrameId。注意:此參數在GUI級別的腳本中不受支持。

2、LAST:屬性列表結束的標記符。

返回值
 整型。成功時返回LR_PASS(0),失敗時返回LR_FAIL(1)。

說明
web_reg_find屬於註冊函數,註冊一個在web頁面中搜索文本字符串的請求,在接下來的Action(例如:web_url)類函數中執行搜索。

通過查找期望的字符是否存在來驗證是否返回了期望的頁面。例如,通過查找“Welcome”來檢查主頁是否完全打開了。也可以查找“Error”檢查瀏覽器是否發生錯誤。還可以使用此函數註冊一個請求來統計特定字符串出現的次數。

如果檢查失敗,在接下來的Action類的函數中會報告錯誤。此函數僅僅註冊請求,並不執行。函數的返回值只表明註冊是否成功,並不表示檢查的結果。

此函數不僅能夠查找text,還能查找到圍繞着text的strings。不要同時指定text和前綴後綴。

Fail,處理選項,可以是“Found或“NotFound”。默認是“NotFound”。

“Fail=Found” 指示當對應的字符找到時,函數檢查失敗。例如,查找單詞“Error”,如果找到了,說名web請求沒有成功,你想把函數檢查設置爲失敗。

“Fail=NotFound”指示當對應的字符找不到時,函數檢查失敗。如果查找的是web請求成功時出現的字符串時,需要使用NotFound。

SaveCount參數指示保存到參數中的匹配的字符串的個數。使用這個屬性,需要指定“SaveCount=param”。檢查操作被執行後,param 的值是null結尾的數字類型的值。

如果指定了SaveCount,且沒有使用Fail參數,檢查不會失敗,無論需要查找的字符串是否找到。通過檢查SaveCount的值確定字符串是否被找到。如果param是0,說明沒有找到對應的字符串。

如果同時指定了SaveCount和Fail,指定的錯誤處理選項和SaveCount協同工作。 handling option specified works together with the SaveCount. Thus,如果指定了SaveCount且指定了“Fail=NotFound” ,但是字符串被找到,SaveCount被賦值爲字符串出現的次數,檢查成功。如果字符串找不到,SaveCount被賦值爲0,檢查失敗(注意,參數的0值只在運行時設置中Continue on error 選中時纔有意義)。

此函數在HTML-based和URL-based的腳本中都可以使用。此函數是在所請求內容到達之前註冊搜索請求的,所以當所請求內容一到達後就會執行搜索,產生的腳本比較高效。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章