一、錄制回放中文亂碼
我錄制登陸的腳本,使用者名中出現中文,回放的時候總是提示登陸失敗。如下圖:
圖1 lr回放中文亂碼
解決中文亂碼可以在錄制的時候在virtual user gen的 tools->recoding options -> advanced -> support charset -> utf-8。重新錄制後中文亂碼問題得到解決。
二、整合腳本中文亂碼
錄制增強(參數化,關聯,檢查點,事務)腳本後決定将幾個腳本整合在一起。于是建立了一個空的腳本,将登陸退出公用操作分别放在vuser_init和vuser_end中,其他操作放在各自的action中。整理完成回放後又出現中文亂碼。為解決這個問題,最關鍵的是要把本地gbk編碼的漢字轉換成utf-8編碼格式的資訊,為此我們引進loadrunner自帶的編碼函數lr_convert_string_encoding。
int lr_convert_string_encoding ( const char *sourcestring, const char *fromencoding, const char *toencoding, const char *paramname);
該函數有4個參數,含義如下:
sourcestring:被轉換的源字元串。
fromencoding:轉換前的字元編碼。
toencoding:要轉換成為的字元編碼。
paramname:轉換後的目标字元串。
實踐一:
lr_convert_string_encoding("登陸賬号",lr_enc_system_locale, lr_enc_utf8, "account");
web_submit_data("login.quick",
……
"name=account", "value={account}", enditem,
last);
回放腳本的時候依然報錯。檢視lr_convert_string_encoding的解釋,它會在其轉換的字元串末尾加上\x00。在c語言中\x00是一個字元串的結束,而正是這個\x00的存在導緻了腳本回放失敗。
實踐二:
char tmp[100];
lr_convert_string_encoding("登陸賬号",lr_enc_system_locale, lr_enc_utf8, "account");
strcpy(tmp,lr_eval_string("{account}"));
lr_save_string(tmp,"account");
web_submit_data("login.quick",
……
"name=account", "value={account}", enditem,
last);
最新内容請見作者的github頁:http://qaseven.github.io/