1. 錯誤預防和恢復
參數默認是用{}括起來的,但也可以指定用<>
NTLM或用戶登錄驗證
web_set_user("X\\Y", "Z", "A.com:80");
在域與X上的用戶名為Y的用戶,使用密碼Z來登錄到A.com:80。在windows基本驗證的時候這個腳本被默認錄制下來,但如果web服務器需要更安全的NTLM或更深層次的驗證,需要手動的添加這個函數到腳本中。對于NTML驗證,用戶名必須在域名之后,并且以\分割。使用\等符號,需要使用\\,前面的\用來做轉義用,否則會出現警告提示。
在論壇中也看到了一些朋友討論windows彈出登錄框的操作LR無法錄制到,導致回放出錯,一般出錯信息多為“Error -26547: Authentication required, please use web_set_user, e.g. web_set_user("domain\\user", "password", "host:port"); [MsgId: MERR-26547]”,其實這種情況錯誤信息已經很明顯的給你提示了,需要往腳本中添加web_set_user函數即可。
2. IP欺騙(略)
3. 驗證檢查點
通常腳本錄制完后需要手動添加些腳本來來確保預期的操作確實進行了正確的響應(如在操作之后后驗證顯示的一段文本或者圖片)。這些檢查可以使用正則表達式。
Web虛擬用戶腳本中不會錄制到檢查點,需要手動添加或者使用VuGen的用戶接口來添加函數代碼。
最常用的檢查點函數是web_reg_find。這個注冊函數會查找腳本中下一個操作如web_url后產生的一段文本。它是從返回的緩沖區掃描而不是在接收的頁面中查找。這是比web_find更高效的一個函數。
可以使用下面的代碼來驗證文本出現的次數:
web_reg_find("Text=ABC", "SaveCount=abc_count", LAST);
web_url("Step", "URL=...", LAST);
if (strcmp(lr_eval_string("{abc_count}"), "0") == 0)
lr_output_message("not found");
else
lr_output_message("{abc_count} found");
如果想保存并且顯示找到的文本,可以使用web_reg_save_param界定左右邊界把找到的信息保存到參數中。如下:
char *str1,*str2;
str1="desired text";
// Register the left and right beacons sought:
web_reg_save_param("param","LB/ic=xxx","RB=xxx");
// Do the monitored deed:
web_url("some url","URL=www.xxx.com",LAST);
// Compare:51Testing軟件測試網*w({:B:~8_
str2=lr_eval_string("{param}");
if(strcmp(str1,str2)==0) {
lr_output_message("param found");
}else{
lr_output_message("Value found is %s",str2);
}
1)這里想跟大家說下注冊函數,在web/http協議的腳本中,注冊函數均以web_reg為前綴,這種注冊型的函數都是從緩沖區掃描或者獲得數據,因此需要提前聲明即需要在能獲得該查找信息的函數之前添加這些注冊函數。例如,web_url()請求了一個頁面,我需要驗證該頁面中是否有某個特定的文本,那需要在web_url()函數之前加上web_reg_find,類似的還有關聯的函數web_reg_save_para是一樣的,需要放到能獲得想要的數據的請求的函數之前。但如果想查看這些函數最終保存的結果,如想打印關聯函數web_reg_save_para中保存的參數內容,打印的操作就需要放到請求的函數之后了。
2)web_find和web_reg_find的區別:前面的是查找頁面顯示的數據,因此需要放在請求頁面的函數之后,而且查找的信息是顯示的web頁面上的信息。后者是注冊型函數,需要放到請求的頁面之前,而且查找的內容是服務器返回的緩沖數據中查找,所以查找內容應該看html源代碼的內容。
基于HTML錄制方式的代碼,可以使用web_image_check對HTML頁面中包含的圖片進行驗證。并且需要注意的是只有在Runtime Settings > Internet Protocol Preferences 選擇了"Enable Image and text check" 檢查點才有效。
原文轉自:http://www.anti-gravitydesign.com