程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> Loadrunner 測試網頁下載文件的腳本實例

Loadrunner 測試網頁下載文件的腳本實例

編輯:關於C#
 

論壇上經常有人問起,如何讓LoadRunner可以下載文件並保存在本地。

初看起來,這個問題應該不是問題:LoadRunner錄制的是Client(浏覽器)和服務器之間的交互,自然也就能記錄到下載文件的動作和收到下載文件的全部內容,但如果真用LoadRunner去嘗試這樣一個工作,卻會發現在LoadRunner錄制的腳本中根本沒有任何與下載文件相關的語句。

其實,在HTTP協議中,本來就沒有任何一個方法或是動作能夠標識“下載文件”這個動作,對HTTP協議來說,下載文件或是請求頁面,都只是一個GET方法,至於說我們下載文件時看到的那個提示我們給出用戶名的對話框,那完全是客戶端自身判斷到我們請求的是一個文件而自行處理的。

那麼,究竟該如何才能讓LoadRunner完成這個工作呢?

通過上面的分析,我們已經知道了這樣一些事實:

1、文件請求是通過GET方法請求的;

2、LoadRunner已經記錄了客戶端發出的對文件的請求,並能夠收到文件內容;

因此,我們完全可以通過關聯的方法,從LoadRunner發出的請求的響應中獲取到文件的內容,然後通過LoadRunner的文件操作方法,自行生成文件。

從LoadRunner錄制時的記錄(Recording Log)中,我們可以看到具體的請求和請求的響應信息:

 

Action()
{
int flen; //定義一個整型變量保存獲得文件的大小
long filedes; //保存文件句柄
char file[256]="\0"; //保存文件路徑及文件名
/ ar chNumber
web_set_max_html_param_len("99999999");//設置頁面接收最大的字節數,該設置應大於下載文件的大小
web_concurrent_start(NULL);
web_reg_save_param("filecontent",
"LB=",
"RB=",
"Search=BODY",
LAST);
//使用關聯函數獲取下載文件的內容,在這裡不定義左右邊界,獲得服務器響應的所有內容
//web_reg_save_param("file",
//"LB=filename=\"",
// "RB=\"",
// "Search=all",
// LAST);
//使用關聯函數在服務器響應的頭文件中獲取下載文件名
lr_rendezvous("xiazai");
web_url("llmusic.zip",
"URL=http://58.250.87.4/lltvweb/epgzip/1_wht/llmusic.zip",
"Resource=1",
"RecContentType=application/zip",
"Referer=",
"Snapshot=t7.inf",
LAST);
//發出下載請求
web_concurrent_end(NULL);
strcat(file,"f:\\"); //將"c:\\"這個路徑保存到file中
strcat(file,lr_eva l_string("llmusic.zip"));//將獲得的文件名拼接在file這個變量字符串之後
flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); //獲得文件大小
if(flen > 0)
{
if((filedes = fopen(file, "wb")) == NULL)
{
lr_output_message("Open File Failed!", lr_eva l_string("{filecontent}"));
return -1;
}
fwrite( lr_eva l_string("{filecontent}"),flen,1,filedes );
fclose( filedes );
}
return 0;
}

 

如果我們需要重復保存這個文件到本地,如何解決重名問題呢,下面這段代碼可以隨機生成文件名 char file[256]="\0";
char * chNumber
chNumber=lr_eval_string("{Random}"); //生成隨機數

strcat(file,"c:\\test");
strcat(file,chNumber);
strcat(file,".rar");
 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved