loadrunner12-錯誤 -26366: 找不到 web_reg_find 的“Text=19728.00”


轉:檢查點(web_reg_find函數詳解)

LR檢查點

  設置檢查點的目的不只是為了驗證我們的腳本沒有錯誤,而更重要的是一個規范問題,如何使得測試結果更具有說服力,因此建議所有的測試腳本中都添加檢查點設置

 

 一、設置檢查點的方法

1.將腳本切換到樹結構,在page view頁面上找到你要check的文本內容, 並執行鼠標右鍵,選擇Add a text check.

2.將腳本切換回代碼界面,在光標閃爍的上行,手動添加如下的代碼

web_reg_find("Text/IC=Payment Details", "SaveCount=para_count", LAST);

這里是要運行的頁面腳本

if (atoi(lr_eval_string("{para_count}"))>0)        //驗證是否找到了頁面上的要檢查的字符串

    lr_output_message("Pass!");

 else

  lr_output_message("Failed!");

注意:

l   “Payment Details” 為你要檢查的文本;

l   腳本執行到此處,不管頁面上是否存在你要檢查的字符串,腳本都不會報錯,而是執行下去。

l   此段代碼將找到的你要檢查的字符串的個數,存為一個參數。 然后在頁面代碼的后面,通過檢查這個參數的值是否大於0,來判斷是否找到了你所要檢查的字符串。

l   這里的測試結果均以200狀態碼返回,其失敗的結果將在分析報告中進行分類標識。

//atoi()函數的作用是將一個ASCII字符串轉換為整型

//lr_eval_string()函數作用是取得參數值,將字符串變量中的參數值替換為當前的參數值並將這個字符串返回

 

3. 光標停留在要插入函數的位置,在INSERT菜單中,選擇new step,在列表中選擇或查找要插入的函數,根據提示填寫必要的參數;

 

二、設置檢查點時要注意(主要針對web_find()函數的相關設置)

1.在使用檢查點的時候我們還需要注意一些問題,通常我們都要設置一些中文檢查點,但是LR默認不支持,如果你設置了中文檢查點而報錯,那你就應該注意了,在錄制腳本的時候選中設置的UTF-8選擇,去掉勾,如下圖所示:

2.使用文本檢查點時,由於檢查點功能會耗費一定的資源,因此LoadRunner默認關閉了對文本及圖像的檢查。要想開啟檢查功能,必須修改運行時的配置Run-time Setting,需要設置啟用圖片和文本檢查點,如下圖所示:

系統默認是不勾選該選項的。

 

三、檢查點腳本運行中經常出現的錯誤

1.錯誤代碼Error -27257: Pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of iteration number 1

原因:web_reg_find的位置錯了, 你將它放在某個action的最后,它的后面是 return 0, 所以出錯了

解決方法:web_reg_find位置放錯了,應該放到請求頁面前面。

 

2.錯誤代碼:Action.c(27): Error -26366: "Text=ABC" not found for web_reg_find  [MsgId: MERR-26366]

出現該問題時,需要檢查web_reg_find是否放在查找內容的前面。

注:一定注意函數只放在要檢查的URL前面,不要隨便再往前面放置。

 

3. 錯誤代碼: Action.c(22): Error -27191: "web_image_check" failed (0 occurrence(s) found.[MsgId: MERR-27191]

如果是web_find(),檢查函數的位置是否在要查找內容的后面;如果是web_image_check(),查看該圖片的源代碼,看其是否是這個頁面上的圖片,很可能是圖片選擇錯誤,即所選圖片不屬於該頁面。

 

 

四、相關函數介紹

1.         web_find()函數

web find("web_find","RighOf=a","LeftOf=b","What=name",LAST);

參數解釋:"web_find"定義該查找函數的名稱;“LeftOf”和“RighOf=”用來定義查找字符的左右邊界;“What=”定義查找內容;

例如上述參數舉例中的意思就是在頁面中查找左邊界為b,右邊界為a,內容為name的信息;

使用該函數注意事項:該函數是在查找頁面中的內容,所以要放在要查找的內容的后面;該函數只能在基於HTML模式錄制的腳本中進行查找

 

2.         web_reg_find()函數

web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);

參數解釋: Search用來定義查找范圍,SaveCount定義查找計數變量名稱,該參數可以記錄在緩存中查找內容出現的次數,可以使用該值,來判斷要查找的內容是否被找到;

例如上述參數舉例中的意思就是Body中查找內容為aaa的信息,並將出現次數記錄在變量ddd中;

使用該函數注意事項:該函數是在緩存中查找相應的內容,所以要放在查找內容之前;通常情況下寫在如下六個函數之 前:Web_castom_request(); web_image(); web_link(); web_submit_data(); web_submit_form(); web_url();

使用技巧:在該函數的參數中有個“SaveCount”,該參數可以記錄在緩存中查找內容出現的次數,我們可以使用該值,來判斷要查找的內容是否被找到。

 

3.         web_image_check()函數

web_image_check("web_image_check","Alt=","Src=",LAST);

參數解釋:“Alt”和“Src”的值直接取該圖片在網頁源代碼中相應參數的值;

經過測試,該函數用到查找內容前面或后面,都不影響查找結果。

 

五. web_find與web_reg_find函數比較

  • l  這兩個函數函數類型不同,WEB_FIND是普通函數,WEB_REG_FIND是注冊函數;
  • l  WEB_FIND使用時必須開啟內容檢查選項,而WEB_REG_FIND則不沒有此限制;
  • l  WEB_FIND只能用在基於HTML模式錄制的腳本中,而WEB_REG_FIND沒有此限制;
  • l  WEB_FIND是在返回的頁面中進行內容查找,WEB_REG_FIND是在緩存中進行查找;
  • l  WEB_FIND在執行效率上不如WEB_REG_FIND;
  • l  WEB_FIND使用時放在檢查內容后面;而WEB_REG_FIND使用時放在檢查內容前面。

 

檢查點一般是在什么情況下會使用
  1.驗證假設登錄是否成功 
  2.驗證頁面跳轉是否正確

 

附錄:實例詳解

代碼一:

web_reg_find("Text=Payment Details",LAST);

代碼思路:

1."Payment Details" 為你要檢查的文本;

2. 腳本執行到此處,若在頁面上找到了這幾個字符串,那腳本繼續執行下去;若沒有找到,腳本將在此報錯並且結束。

 

代碼二:

web_reg_find("Text=Payment Details", "SaveCount=para_count", LAST); //check 的函數

web_submit_form("reservations.pl_2", //要check的頁面的錄制時的代碼

"Snapshot=t22.inf",

ITEMDATA,

"Name=outboundFlight", "Value=003;0;06/23/2007", ENDITEM, 

"Name=reserveFlights.x", "Value=61", ENDITEM,

"Name=reserveFlights.y", "Value=2", ENDITEM,

LAST);

if (atoi(lr_eval_string("{para_count}"))>0) //驗證是否找到了頁面上的要檢查的字符串

  lr_output_message("we find the string!");

else

  lr_output_message("sorry,don't find the string!");

代碼思路:

1."Payment Details" 為你要檢查的文本;

2. 腳本執行到此處,不管頁面上是否存在你要檢查的字符串,腳本都不會報錯,而是執行下去。

3. 此段代碼將找到的你要檢查的字符串的個數,存為一個參數。 然后在頁面代碼的后面,通過檢查這個參數的值是否大於0,來判斷是否找到了你所要檢查的字符串。

 

代碼三:

A. web_reg_find("Text=Payment Detdils", "Fail=NotFound",LAST);或者

B. web_reg_find("Text=Payment Detdils", "Fail=Found",LAST);

代碼思路:

1."Payment Details" 為你要檢查的文本;

2. 若是A代碼:腳本執行到此處,若沒有找到check的字符串,腳本將FAIL, 並且停止執行下去。反之,則一直執行下去。

3. 若是B代碼:腳本執行到此處,若找到check的字符串,腳本將FAIL, 並且停止執行下去。反之,則一直執行下去。

 

代碼四:

 在LoadRunner中,大小寫是敏感的,甚至在被檢驗的值中。所以上面的腳本會因為大寫字母的原因,不會識別“Welcome”的。所以Steve Cheney 建議使用“IC”忽略大小寫的文字標志:
 web_reg_find("Text/IC=Welcome",LAST);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM