socket腳本錯誤總結

lrs_set_recv_timeout:發出請求後等待返回數據的時間
lrs_set_recv_timeout2:接收返回數據的時間
lrs_set_receive_option:停止接收數據
1、Mismatch(不匹配) EndMarker(結束符)默認情況下是Mismatch起作用,Mismatch的默認值爲MISMATCH_SIZE,也就是當buffer大小不同時停止接收,然後再重新讀取buffer直到超時,從而產生wasted time。所以我就考慮使用EndMarker是否能解決這一問題,把所有動態返回的buffer都使用EndMarker選項進行接收後,果然不再出現wasted time了


lrs_set_receive_option(EndMarker, StringTerminator, "10=10000|\x16");

Error : socket0 - Invalid argument. Error code : 10022.
沒有關閉套接字:lrs_close_socket("腳本錄製中所創建的套接字");

missing newline in [...] .dat文件錯誤
參數化文件最後一行沒有加空行

socket0 - Software caused connection abort. Error code : 10053.

1、當返回的數據每次長度不同時,LR會等10秒後再接收一次,這樣會導致事務地等待。因此可以根據經驗強制指定接收報文長度,避免超時重讀的問題。
函數:lrs_receive_ex()
使用方法:lrs_receive_ex("socket0","buf1","NumberOfBytesToRev=60",LrsLastArg)

2、關聯
靜態關聯:lrs_save_param("socket0",LRS_LAST_RECEIVED,"result",10,20)
//lrs_save_param(端口連接名,LRS_LAST_RECEIVED,參數名,偏移量,保存長度)
LRS_LAST_RECEIVED說明是最後一次商品返回
                                                             
動態關聯:當需要的數據不是固定的位置和長度時,那麼就需要通過左右邊界的方式來捕獲返回。
lrs_save_searched_string()
如:
lrs_receive("socket0","buf1",LrsLastArg);
lrs_save_searched_string("socket0",LRS_LAST_RECEIVED,"result","LB=<title>","RB=</title>",1,0,-1);
//lrs_save_searched_string(商品連接名,LRS_LAST_RECEIVED,參數名,"LR=左邊界","RB=右邊界",取值序號,偏移量,保存長度)

如果沒有設置左邊界,那麼取值序號必須小於0(默認值爲-1);如果沒有設置右邊界,希望保存剩餘的所有內容時需要將保存長度設置爲-1
取值序號:和web_reg_save_param()關聯函數中的序號功能相同,直接填寫數據則返回第幾次出現的值。但是lrs_save_searched_string()函數無法獲得多個符合邊界的返回並保存在參數數組中,在該函數中不能將序號關鍵字設置爲ALL。我們可以通過自己編寫一個函數來解決這個問題,代碼如下:

3、回放腳本時VuGen無響應,同時mmdrv.exe進程佔用了大量的CPU
解決方法:打開控制面板-區域和語言選項-管理,在這裏將非uniclde程序中所使用的當前語言從中文改成英文,重新錄製腳本後即不會出現亂碼,解決回放腳本的無響應錯誤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章