• 軟件測試技術
  • 軟件測試博客
  • 軟件測試視頻
  • 開源軟件測試技術
  • 軟件測試論壇
  • 軟件測試沙龍
  • 軟件測試資料下載
  • 軟件測試雜志
  • 軟件測試人才招聘
    暫時沒有公告

字號: | 推薦給好友 上一篇 | 下一篇

使用自定義請求向服務器發送請求的方法

發布: 2007-11-16 13:55 | 作者: xingcyx | 來源: http://www.blogjava.net/xingcyx | 查看: 263次 | 進入軟件測試論壇討論

領測軟件測試網

MILY: 宋體">在LR中,web_submit_data中字符串的拼接有個問題,就是不能使用C中的字符串類型去直接替換,

就算使用了lr_save_string函數,仍然可能會存在問題,以下舉例說明。

腳本背景如下:

web_submit_data(classicustomermaterial_significanteventinfo.jsf")返回的頁面上可能存在多條記錄,同時記錄數不確定,因此需要設定一個循環,來重復關聯,并執行后續的操作,如:

web_submit_data("creditReviewClassiLoanMaterial.jsf",            

ITEMDATA,

"Name=body:frm2:classiAssetsVOTable_0:check", "Value=true", ENDITEM,

"Name=body:frm2:classiAssetsVOTable_1:check", "Value=true", ENDITEM,

"Name=body:frm2:_id148", "Value=填寫債項級分類信息", ENDITEM,
    "Name=body:frm2_SUBMIT", "Value=1", ENDITEM,
    "Name=autoScroll", "Value=0,102", ENDITEM,
    "Name=body:frm2:_link_hidden_", "Value=", ENDITEM,

LAST);

假定黑體部分的腳本classiAssetsVOTable_0:check、classiAssetsVOTable_1:check是需要循環進行關聯的。如果有實際操作過的朋友就不難發現,0、1這些數字很難在函數中用變量替換。這個時候有一個簡便的方法,就是使用LR中提供的自定義請求函數來向服務器提交請求,即使用web_custom_request函數。該函數的使用方法很簡單,最主要的是在Body部分把ITEMDATA之后的“Name”和“Value”通過{Name}={Value}的形式組合起來,并且在多組值之間用“&”分隔。如:

web_custom_request("creditReviewClassiLoanMaterial.jsf",

       "Method=POST",

       "RecContentType=text/html",

       "Snapshot=t19.inf",

       "Mode=HTML",    

       "Body=body:frm2:classiAssetsVOTable_1:check=true&

       body:frm2:classiAssetsVOTable_%2:check=true&

       body:frm2:_id148=填寫債項級分類信息&      

       body:frm2_SUBMIT=1&

       autoScroll=0,102&

       body:frm2:_link_hidden_="

       LAST);  

關于該函數更詳細的信息可以參考LR的幫助文檔。

回放腳本,成功!通過執行結果我們可以看到,使用web_custom_request向服務器發送請求和使用web_submit_data發送請求起到的效果是完全一樣的。不過看到這里,可能大家會有一個疑問:為什么要使用自定義請求報文來代替原有的web_submit_data呢?用原來的這個不是好好的嗎?主要是因為在有些時候,我們需要使用自定義的字符串來對腳本進行一些特殊處理,例如在本例中,我們就遇到了這樣的問題。由于我們需要將

"Name=body:frm2:classiAssetsVOTable_0:check", "Value=true", ENDITEM,

"Name=body:frm2:classiAssetsVOTable_1:check", "Value=true", ENDITEM,

這部分腳本放進循環體中,因此我們希望可以通過字符串拼接的方式,組裝出這一整串字符,放進請求函數中,而在web_submit_data中很難達到這樣看似簡單的目的(我一直覺得應該還是有辦法的,但我試了很久一直不成功。),所以只好另找出路。

以下是腳本的示例:

<!--[if !supportLists]-->1、  <!--[endif]-->利用字符串操作函數組裝所需的字符串

strcpy(str,"BODY=");              

       for(i=0;i<count;i++)

       {

              sprintf(tmp,"body:frm2:classiAssetsVOTable_%d:check=true&",i);

              strcat(str, tmp);

       }

       strcat(str,"body:frm2:_id148=填寫債項級分類信息&body:frm2_SUBMIT=1&autoScroll=0,102&body:frm2:_link_hidden_=");

<!--[if !supportLists]-->2、  <!--[endif]-->在自定義請求函數中使用組裝好的字符串。

               web_custom_request("creditReviewClassiLoanMaterial.jsf",

                                            "URL={url}",

                                            "Method=POST",

                                            "RecContentType=text/html",

                                            "Referer={url}",

                                            "Snapshot=t19.inf",

"Mode=HTML",

                                                 str,

                                                 LAST);  

延伸閱讀

文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/

TAG: lr


關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97